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

使用 int integer 作为循环变量类型和使用 long long 作为循环变量类型,这个速度几乎是一模一样的。所以之后可你可以这个,之后我们就用 long long 吧,避免这个溢出风险。
[https://quick-bench.com/q/QWglJiYzyTVmjjHDhioI4S2UDOk](https://quick-bench.com/q/QWglJiYzyTVmjjHDhioI4S2UDOk)
```bash
#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);
```