0%

Int 和 Long long 的循环变量类型性能基准测试

image

使用 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
#include <benchmark/benchmark.h>
#include <cstdint>

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);