//// Created by andrew on 2021年5月24日.//#include <benchmark/benchmark.h>#include <array>constexpr int len = 6;// constexpr function具有inline属性,你应该把它放在头文件中constexpr int my_pow(const int i){return i * i;}// 使用operator[]读取元素,依次存入1-6的平方static void bench_array_operator(benchmark::State& state){std::array<int, len> arr{};constexpr int i = 1;for (auto _: state) {arr[0] = my_pow(i);arr[1] = my_pow(i+1);arr[2] = my_pow(i+2);arr[3] = my_pow(i+3);arr[4] = my_pow(i+4);arr[5] = my_pow(i+5);}}BENCHMARK(bench_array_operator);// 使用at()读取元素,依次存入1-6的平方static void bench_array_at(benchmark::State& state){std::array<int, len> arr;constexpr int i = 1;for (auto _: state) {arr.at(0) = my_pow(i);arr.at(1) = my_pow(i+1);arr.at(2) = my_pow(i+2);arr.at(3) = my_pow(i+3);arr.at(4) = my_pow(i+4);arr.at(5) = my_pow(i+5);}}BENCHMARK(bench_array_at);// std::get<>(array)是一个constexpr function,它会返回容器内元素的引用,并在编译期检查数组的索引是否正确static void bench_array_get(benchmark::State& state){std::array<int, len> arr{};constexpr int i = 1;for (auto _: state) {std::get<0>(arr) = my_pow(i);std::get<1>(arr) = my_pow(i+1);std::get<2>(arr) = my_pow(i+2);std::get<3>(arr) = my_pow(i+3);std::get<4>(arr) = my_pow(i+4);std::get<5>(arr) = my_pow(i+5);}}BENCHMARK(bench_array_get);BENCHMARK_MAIN();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。