00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "absl/container/fixed_array.h"
00016
00017 #include <stddef.h>
00018 #include <string>
00019
00020 #include "benchmark/benchmark.h"
00021
00022 namespace {
00023
00024
00025
00026 class SimpleClass {
00027 public:
00028 SimpleClass() : i(3) { }
00029 ~SimpleClass() { i = 0; }
00030 private:
00031 int i;
00032 };
00033
00034 template <typename C, size_t stack_size>
00035 void BM_FixedArray(benchmark::State& state) {
00036 const int size = state.range(0);
00037 for (auto _ : state) {
00038 absl::FixedArray<C, stack_size> fa(size);
00039 benchmark::DoNotOptimize(fa.data());
00040 }
00041 }
00042 BENCHMARK_TEMPLATE(BM_FixedArray, char, absl::kFixedArrayUseDefault)
00043 ->Range(0, 1 << 16);
00044 BENCHMARK_TEMPLATE(BM_FixedArray, char, 0)->Range(0, 1 << 16);
00045 BENCHMARK_TEMPLATE(BM_FixedArray, char, 1)->Range(0, 1 << 16);
00046 BENCHMARK_TEMPLATE(BM_FixedArray, char, 16)->Range(0, 1 << 16);
00047 BENCHMARK_TEMPLATE(BM_FixedArray, char, 256)->Range(0, 1 << 16);
00048 BENCHMARK_TEMPLATE(BM_FixedArray, char, 65536)->Range(0, 1 << 16);
00049
00050 BENCHMARK_TEMPLATE(BM_FixedArray, SimpleClass, absl::kFixedArrayUseDefault)
00051 ->Range(0, 1 << 16);
00052 BENCHMARK_TEMPLATE(BM_FixedArray, SimpleClass, 0)->Range(0, 1 << 16);
00053 BENCHMARK_TEMPLATE(BM_FixedArray, SimpleClass, 1)->Range(0, 1 << 16);
00054 BENCHMARK_TEMPLATE(BM_FixedArray, SimpleClass, 16)->Range(0, 1 << 16);
00055 BENCHMARK_TEMPLATE(BM_FixedArray, SimpleClass, 256)->Range(0, 1 << 16);
00056 BENCHMARK_TEMPLATE(BM_FixedArray, SimpleClass, 65536)->Range(0, 1 << 16);
00057
00058 BENCHMARK_TEMPLATE(BM_FixedArray, std::string, absl::kFixedArrayUseDefault)
00059 ->Range(0, 1 << 16);
00060 BENCHMARK_TEMPLATE(BM_FixedArray, std::string, 0)->Range(0, 1 << 16);
00061 BENCHMARK_TEMPLATE(BM_FixedArray, std::string, 1)->Range(0, 1 << 16);
00062 BENCHMARK_TEMPLATE(BM_FixedArray, std::string, 16)->Range(0, 1 << 16);
00063 BENCHMARK_TEMPLATE(BM_FixedArray, std::string, 256)->Range(0, 1 << 16);
00064 BENCHMARK_TEMPLATE(BM_FixedArray, std::string, 65536)->Range(0, 1 << 16);
00065
00066 }