fork download
  1. #include <benchmark/benchmark.h>
  2. #include <deque>
  3. #include <forward_list>
  4.  
  5. using namespace std;
  6.  
  7. static void sequentialArray (benchmark::State &state) {
  8. int n = state.range(0);
  9. int *arr = new int[n];
  10.  
  11. for (auto _ : state) {
  12. int i = 0;
  13. for (int j = 0; j < 1'000'000'000; j++) {
  14. arr[i] = i;
  15. i = (i + 1 < n ? i + 1 : 0);
  16. }
  17. benchmark::DoNotOptimize(arr);
  18. benchmark::ClobberMemory();
  19. }
  20. }
  21. BENCHMARK(sequentialArray)->RangeMultiplier(16)->Range(1 << 4, 1 << 24)->Iterations(10);
  22.  
  23. static void sequentialDeque (benchmark::State &state) {
  24. int n = state.range(0);
  25. deque<int> dq(n);
  26.  
  27. for (auto _ : state) {
  28. int i = 0;
  29. for (int j = 0; j < 1'000'000'000; j++) {
  30. dq[i] = i;
  31. i = (i + 1 < n ? i + 1 : 0);
  32. }
  33. benchmark::DoNotOptimize(dq);
  34. benchmark::ClobberMemory();
  35. }
  36. }
  37. BENCHMARK(sequentialDeque)->RangeMultiplier(16)->Range(1 << 4, 1 << 24)->Iterations(10);
  38.  
  39. static void sequentialList (benchmark::State &state) {
  40. int n = state.range(0);
  41. forward_list<int> fwl(n);
  42.  
  43. for (auto _ : state) {
  44. forward_list<int>::iterator it = fwl.begin();
  45. int i = 0;
  46. for (int j = 0; j < 1'000'000'000; j++) {
  47. *it = i;
  48. i = (i + 1 < n ? i + 1 : 0);
  49. it++;
  50. if (it == fwl.end()) it = fwl.begin();
  51. }
  52. benchmark::DoNotOptimize(fwl);
  53. benchmark::ClobberMemory();
  54. }
  55. }
  56. BENCHMARK(sequentialList)->RangeMultiplier(16)->Range(1 << 4, 1 << 24)->Iterations(10);
  57.  
  58. BENCHMARK_MAIN();
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:10: fatal error: benchmark/benchmark.h: No such file or directory
 #include <benchmark/benchmark.h>
          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
stdout
Standard output is empty