12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "base/rand_util.h"
- #include "base/time/time.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "testing/perf/perf_result_reporter.h"
- namespace base {
- namespace {
- constexpr char kMetricPrefix[] = "RandUtil.";
- constexpr char kThroughput[] = "throughput";
- } // namespace
- TEST(RandUtilPerfTest, RandUint64) {
- uint64_t inclusive_or = 0;
- constexpr int kIterations = 1e7;
- auto before = base::TimeTicks::Now();
- for (int iter = 0; iter < kIterations; iter++) {
- inclusive_or |= base::RandUint64();
- }
- auto after = base::TimeTicks::Now();
- perf_test::PerfResultReporter reporter(kMetricPrefix, "RandUint64");
- reporter.RegisterImportantMetric(kThroughput, "ns / iteration");
- uint64_t nanos_per_iteration = (after - before).InNanoseconds() / kIterations;
- reporter.AddResult("throughput", static_cast<size_t>(nanos_per_iteration));
- ASSERT_NE(inclusive_or, static_cast<uint64_t>(0));
- }
- TEST(RandUtilPerfTest, InsecureRandomRandUint64) {
- base::InsecureRandomGenerator gen;
- uint64_t inclusive_or = 0;
- constexpr int kIterations = 1e7;
- auto before = base::TimeTicks::Now();
- for (int iter = 0; iter < kIterations; iter++) {
- inclusive_or |= gen.RandUint64();
- }
- auto after = base::TimeTicks::Now();
- perf_test::PerfResultReporter reporter(kMetricPrefix,
- "InsecureRandomRandUint64");
- reporter.RegisterImportantMetric(kThroughput, "ns / iteration");
- uint64_t nanos_per_iteration = (after - before).InNanoseconds() / kIterations;
- reporter.AddResult("throughput", static_cast<size_t>(nanos_per_iteration));
- ASSERT_NE(inclusive_or, static_cast<uint64_t>(0));
- }
- } // namespace base
|