
使用 int integer 作为循环变量类型和使用 long long 作为循环变量类型,这个速度几乎是一模一样的。所以之后可你可以这个,之后我们就用 long long 吧,避免这个溢出风险。
https://quick-bench.com/q/QWglJiYzyTVmjjHDhioI4S2UDOk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
constexpr int N = 100000000;
static void BM_loop_int(benchmark::State& state) { for (auto _ : state) { std::uint64_t acc = 0; for (int i = 0; i < N; ++i) { acc += (unsigned)i; } benchmark::DoNotOptimize(acc); } } BENCHMARK(BM_loop_int);
static void BM_loop_ll(benchmark::State& state) { for (auto _ : state) { std::uint64_t acc = 0; for (long long i = 0; i < (long long)N; ++i) { acc += (unsigned)i; } benchmark::DoNotOptimize(acc); } } BENCHMARK(BM_loop_ll);
|