6
6
7
7
#include < algorithm>
8
8
9
+
10
+ auto min_estimator = [](const std::vector<double >& v) -> double {return *(std::min_element (std::begin (v), std::end (v)));};
11
+
12
+
9
13
static void BM_sim_X (benchmark::State& state) {
10
14
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range (0 ));
11
15
qc->emplace_back <qc::StandardOperation>(state.range (0 ), 0 , qc::X);
@@ -15,7 +19,7 @@ static void BM_sim_X(benchmark::State& state) {
15
19
}
16
20
state.SetLabel (" X" );
17
21
}
18
- BENCHMARK (BM_sim_X)->DenseRange(4 , 25 );
22
+ BENCHMARK (BM_sim_X)->DenseRange(4 , 25 )->ComputeStatistics( " min " , min_estimator) ;
19
23
20
24
static void BM_sim_H (benchmark::State& state) {
21
25
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range (0 ));
@@ -26,7 +30,7 @@ static void BM_sim_H(benchmark::State& state) {
26
30
}
27
31
state.SetLabel (" H" );
28
32
}
29
- BENCHMARK (BM_sim_H)->DenseRange(4 , 25 );
33
+ BENCHMARK (BM_sim_H)->DenseRange(4 , 25 )->ComputeStatistics( " min " , min_estimator) ;
30
34
31
35
static void BM_sim_T (benchmark::State& state) {
32
36
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range (0 ));
@@ -37,7 +41,7 @@ static void BM_sim_T(benchmark::State& state) {
37
41
}
38
42
state.SetLabel (" T" );
39
43
}
40
- BENCHMARK (BM_sim_T)->DenseRange(4 , 25 );
44
+ BENCHMARK (BM_sim_T)->DenseRange(4 , 25 )->ComputeStatistics( " min " , min_estimator) ;
41
45
42
46
static void BM_sim_CNOT (benchmark::State& state) {
43
47
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range (0 ));
@@ -48,7 +52,7 @@ static void BM_sim_CNOT(benchmark::State& state) {
48
52
}
49
53
state.SetLabel (" CNOT" );
50
54
}
51
- BENCHMARK (BM_sim_CNOT)->DenseRange(4 , 25 );
55
+ BENCHMARK (BM_sim_CNOT)->DenseRange(4 , 25 )->ComputeStatistics( " min " , min_estimator) ;
52
56
53
57
static void BM_sim_TOFFOLI (benchmark::State& state) {
54
58
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range (0 ));
@@ -60,7 +64,7 @@ static void BM_sim_TOFFOLI(benchmark::State& state) {
60
64
}
61
65
state.SetLabel (" Toffoli" );
62
66
}
63
- BENCHMARK (BM_sim_TOFFOLI)->DenseRange(4 , 25 );
67
+ BENCHMARK (BM_sim_TOFFOLI)->DenseRange(4 , 25 )->ComputeStatistics( " min " , min_estimator) ;
64
68
65
69
/* *
66
70
* The following is translated from the other benchmarks at Roger-luo/quantum-benchmarks and does the following:
@@ -112,7 +116,7 @@ static void BM_sim_QCBM(benchmark::State& state) {
112
116
state.SetLabel (" QCBM" );
113
117
}
114
118
115
- BENCHMARK (BM_sim_QCBM)->DenseRange(4 , 21 ); // on our compute server, the 22 qubit instance takes more than 48h
119
+ BENCHMARK (BM_sim_QCBM)->DenseRange(4 , 21 )->ComputeStatistics( " min " , min_estimator) ; // on our compute server, the 22 qubit instance takes more than 48h
116
120
117
121
static void BM_extra_QCBM_optimized (benchmark::State& state) {
118
122
const unsigned int n_qubits = state.range (0 );
@@ -176,4 +180,4 @@ static void BM_extra_QCBM_optimized(benchmark::State& state) {
176
180
state.SetLabel (" QCBM preprocessed" );
177
181
}
178
182
179
- BENCHMARK (BM_extra_QCBM_optimized)->DenseRange(4 , 21 );
183
+ BENCHMARK (BM_extra_QCBM_optimized)->DenseRange(4 , 21 )->ComputeStatistics( " min " , min_estimator) ;
0 commit comments