Movatterモバイル変換


[0]ホーム

URL:


Google Git
Sign in
chromium /chromium /src /refs/heads/main /. /base /rand_util_perftest.cc
blob: 78f62f062d1fdf01f0c81052aa337c18732e4c6b [file] [log] [blame] [edit]
// Copyright 2021 The Chromium Authors
// 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{
constexprchar kMetricPrefix[]="RandUtil.";
constexprchar kThroughput[]="throughput";
}// namespace
TEST(RandUtilPerfTest,RandUint64){
uint64_t inclusive_or=0;
constexprint 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;
constexprint 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

[8]ページ先頭

©2009-2025 Movatter.jp