@@ -58,13 +58,11 @@ struct HighPrioTask {
58
58
}
59
59
};
60
60
61
-
62
61
template <std::size_t N>
63
62
struct NumHighPrioTasks {
64
63
static constexpr auto value = N;
65
64
};
66
65
67
-
68
66
struct KeepNotifying {
69
67
template <class Atomic >
70
68
static void notify (Atomic& a, std::stop_token st) {
@@ -107,18 +105,35 @@ void BM_1_atomic_1_waiter_1_notifier(benchmark::State& state) {
107
105
}
108
106
}
109
107
110
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<KeepNotifying, NumHighPrioTasks<0 >>)->RangeMultiplier(2 )->Range(1 << 18 , 1 << 20 );
111
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<50 >, NumHighPrioTasks<0 >>)->RangeMultiplier(2 )->Range(1 << 12 , 1 << 14 );
112
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<100 >, NumHighPrioTasks<0 >>)->RangeMultiplier(2 )->Range(1 << 12 , 1 << 14 );
113
-
114
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<KeepNotifying, NumHighPrioTasks<4 >>)->RangeMultiplier(2 )->Range(1 << 18 , 1 << 20 );
115
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<50 >, NumHighPrioTasks<4 >>)->RangeMultiplier(2 )->Range(1 << 12 , 1 << 14 );
116
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<100 >, NumHighPrioTasks<4 >>)->RangeMultiplier(2 )->Range(1 << 12 , 1 << 14 );
108
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<KeepNotifying, NumHighPrioTasks<0 >>)
109
+ ->RangeMultiplier(2 )
110
+ ->Range(1 << 18 , 1 << 20 );
111
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<50 >, NumHighPrioTasks<0 >>)
112
+ ->RangeMultiplier(2 )
113
+ ->Range(1 << 12 , 1 << 14 );
114
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<100 >, NumHighPrioTasks<0 >>)
115
+ ->RangeMultiplier(2 )
116
+ ->Range(1 << 12 , 1 << 14 );
117
117
118
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<KeepNotifying, NumHighPrioTasks<7 >>)->RangeMultiplier(2 )->Range(1 << 4 , 1 << 6 );
119
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<50 >, NumHighPrioTasks<7 >>)->RangeMultiplier(2 )->Range(1 << 3 , 1 << 5 );
120
- BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<100 >, NumHighPrioTasks<7 >>)->RangeMultiplier(2 )->Range(1 << 3 , 1 << 5 );
118
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<KeepNotifying, NumHighPrioTasks<4 >>)
119
+ ->RangeMultiplier(2 )
120
+ ->Range(1 << 18 , 1 << 20 );
121
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<50 >, NumHighPrioTasks<4 >>)
122
+ ->RangeMultiplier(2 )
123
+ ->Range(1 << 12 , 1 << 14 );
124
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<100 >, NumHighPrioTasks<4 >>)
125
+ ->RangeMultiplier(2 )
126
+ ->Range(1 << 12 , 1 << 14 );
121
127
128
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<KeepNotifying, NumHighPrioTasks<7 >>)
129
+ ->RangeMultiplier(2 )
130
+ ->Range(1 << 4 , 1 << 6 );
131
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<50 >, NumHighPrioTasks<7 >>)
132
+ ->RangeMultiplier(2 )
133
+ ->Range(1 << 3 , 1 << 5 );
134
+ BENCHMARK (BM_1_atomic_1_waiter_1_notifier<NotifyEveryNus<100 >, NumHighPrioTasks<7 >>)
135
+ ->RangeMultiplier(2 )
136
+ ->Range(1 << 3 , 1 << 5 );
122
137
123
138
template <std::size_t N>
124
139
struct NumWaitingThreads {
@@ -205,7 +220,6 @@ BENCHMARK(BM_1_atomic_multi_waiter_1_notifier<NotifyEveryNus<100>, NumWaitingThr
205
220
->RangeMultiplier(2 )
206
221
->Range(1 << 4 , 1 << 6 );
207
222
208
-
209
223
BENCHMARK (BM_1_atomic_multi_waiter_1_notifier<KeepNotifying, NumWaitingThreads<3 >, NumHighPrioTasks<4 >>)
210
224
->RangeMultiplier(2 )
211
225
->Range(1 << 8 , 1 << 10 );
@@ -266,7 +280,6 @@ BENCHMARK(BM_1_atomic_multi_waiter_1_notifier<NotifyEveryNus<100>, NumWaitingThr
266
280
->RangeMultiplier(2 )
267
281
->Range(1 << 1 , 1 << 3 );
268
282
269
-
270
283
template <std::size_t N>
271
284
struct NumberOfAtomics {
272
285
static constexpr auto value = N;
@@ -333,83 +346,82 @@ void BM_N_atomics_N_waiter_N_notifier(benchmark::State& state) {
333
346
}
334
347
}
335
348
336
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<2 >, NumHighPrioTasks<0 >>)
337
- ->RangeMultiplier(2 )
338
- ->Range(1 << 12 , 1 << 14 );
339
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<3 >, NumHighPrioTasks<0 >>)
340
- ->RangeMultiplier(2 )
341
- ->Range(1 << 10 , 1 << 12 );
342
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<5 >, NumHighPrioTasks<0 >>)
343
- ->RangeMultiplier(2 )
344
- ->Range(1 << 10 , 1 << 12 );
345
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<7 >, NumHighPrioTasks<0 >>)
346
- ->RangeMultiplier(2 )
347
- ->Range(1 << 8 , 1 << 10 );
348
-
349
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<2 >, NumHighPrioTasks<0 >>)
350
- ->RangeMultiplier(2 )
351
- ->Range(1 << 10 , 1 << 12 );
352
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<3 >, NumHighPrioTasks<0 >>)
353
- ->RangeMultiplier(2 )
354
- ->Range(1 << 8 , 1 << 10 );
355
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<5 >, NumHighPrioTasks<0 >>)
356
- ->RangeMultiplier(2 )
357
- ->Range(1 << 8 , 1 << 10 );
358
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<7 >, NumHighPrioTasks<0 >>)
359
- ->RangeMultiplier(2 )
360
- ->Range(1 << 6 , 1 << 8 );
361
-
362
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<2 >, NumHighPrioTasks<0 >>)
363
- ->RangeMultiplier(2 )
364
- ->Range(1 << 8 , 1 << 10 );
365
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<3 >, NumHighPrioTasks<0 >>)
366
- ->RangeMultiplier(2 )
367
- ->Range(1 << 8 , 1 << 10 );
368
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<5 >, NumHighPrioTasks<0 >>)
369
- ->RangeMultiplier(2 )
370
- ->Range(1 << 7 , 1 << 9 );
371
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<7 >, NumHighPrioTasks<0 >>)
372
- ->RangeMultiplier(2 )
373
- ->Range(1 << 6 , 1 << 8 );
374
-
375
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<2 >, NumHighPrioTasks<4 >>)
376
- ->RangeMultiplier(2 )
377
- ->Range(1 << 7 , 1 << 9 );
378
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<3 >, NumHighPrioTasks<4 >>)
379
- ->RangeMultiplier(2 )
380
- ->Range(1 << 7 , 1 << 9 );
381
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<5 >, NumHighPrioTasks<4 >>)
382
- ->RangeMultiplier(2 )
383
- ->Range(1 << 6 , 1 << 8 );
384
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<7 >, NumHighPrioTasks<4 >>)
385
- ->RangeMultiplier(2 )
386
- ->Range(1 << 4 , 1 << 6 );
387
-
388
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<2 >, NumHighPrioTasks<4 >>)
389
- ->RangeMultiplier(2 )
390
- ->Range(1 << 7 , 1 << 9 );
391
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<3 >, NumHighPrioTasks<4 >>)
392
- ->RangeMultiplier(2 )
393
- ->Range(1 << 7 , 1 << 9 );
394
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<5 >, NumHighPrioTasks<4 >>)
395
- ->RangeMultiplier(2 )
396
- ->Range(1 << 5 , 1 << 7 );
397
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<7 >, NumHighPrioTasks<4 >>)
398
- ->RangeMultiplier(2 )
399
- ->Range(1 << 3 , 1 << 5 );
400
-
401
-
402
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<2 >, NumHighPrioTasks<4 >>)
403
- ->RangeMultiplier(2 )
404
- ->Range(1 << 6 , 1 << 8 );
405
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<3 >, NumHighPrioTasks<4 >>)
406
- ->RangeMultiplier(2 )
407
- ->Range(1 << 6 , 1 << 8 );
408
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<5 >, NumHighPrioTasks<4 >>)
409
- ->RangeMultiplier(2 )
410
- ->Range(1 << 5 , 1 << 7 );
411
- BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<7 >, NumHighPrioTasks<4 >>)
412
- ->RangeMultiplier(2 )
413
- ->Range(1 << 3 , 1 << 5 );
349
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<2 >, NumHighPrioTasks<0 >>)
350
+ ->RangeMultiplier(2 )
351
+ ->Range(1 << 12 , 1 << 14 );
352
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<3 >, NumHighPrioTasks<0 >>)
353
+ ->RangeMultiplier(2 )
354
+ ->Range(1 << 10 , 1 << 12 );
355
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<5 >, NumHighPrioTasks<0 >>)
356
+ ->RangeMultiplier(2 )
357
+ ->Range(1 << 10 , 1 << 12 );
358
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<7 >, NumHighPrioTasks<0 >>)
359
+ ->RangeMultiplier(2 )
360
+ ->Range(1 << 8 , 1 << 10 );
361
+
362
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<2 >, NumHighPrioTasks<0 >>)
363
+ ->RangeMultiplier(2 )
364
+ ->Range(1 << 10 , 1 << 12 );
365
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<3 >, NumHighPrioTasks<0 >>)
366
+ ->RangeMultiplier(2 )
367
+ ->Range(1 << 8 , 1 << 10 );
368
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<5 >, NumHighPrioTasks<0 >>)
369
+ ->RangeMultiplier(2 )
370
+ ->Range(1 << 8 , 1 << 10 );
371
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<7 >, NumHighPrioTasks<0 >>)
372
+ ->RangeMultiplier(2 )
373
+ ->Range(1 << 6 , 1 << 8 );
374
+
375
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<2 >, NumHighPrioTasks<0 >>)
376
+ ->RangeMultiplier(2 )
377
+ ->Range(1 << 8 , 1 << 10 );
378
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<3 >, NumHighPrioTasks<0 >>)
379
+ ->RangeMultiplier(2 )
380
+ ->Range(1 << 8 , 1 << 10 );
381
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<5 >, NumHighPrioTasks<0 >>)
382
+ ->RangeMultiplier(2 )
383
+ ->Range(1 << 7 , 1 << 9 );
384
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<7 >, NumHighPrioTasks<0 >>)
385
+ ->RangeMultiplier(2 )
386
+ ->Range(1 << 6 , 1 << 8 );
387
+
388
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<2 >, NumHighPrioTasks<4 >>)
389
+ ->RangeMultiplier(2 )
390
+ ->Range(1 << 7 , 1 << 9 );
391
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<3 >, NumHighPrioTasks<4 >>)
392
+ ->RangeMultiplier(2 )
393
+ ->Range(1 << 7 , 1 << 9 );
394
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<5 >, NumHighPrioTasks<4 >>)
395
+ ->RangeMultiplier(2 )
396
+ ->Range(1 << 6 , 1 << 8 );
397
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<KeepNotifying, NumberOfAtomics<7 >, NumHighPrioTasks<4 >>)
398
+ ->RangeMultiplier(2 )
399
+ ->Range(1 << 4 , 1 << 6 );
400
+
401
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<2 >, NumHighPrioTasks<4 >>)
402
+ ->RangeMultiplier(2 )
403
+ ->Range(1 << 7 , 1 << 9 );
404
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<3 >, NumHighPrioTasks<4 >>)
405
+ ->RangeMultiplier(2 )
406
+ ->Range(1 << 7 , 1 << 9 );
407
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<5 >, NumHighPrioTasks<4 >>)
408
+ ->RangeMultiplier(2 )
409
+ ->Range(1 << 5 , 1 << 7 );
410
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<50 >, NumberOfAtomics<7 >, NumHighPrioTasks<4 >>)
411
+ ->RangeMultiplier(2 )
412
+ ->Range(1 << 3 , 1 << 5 );
413
+
414
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<2 >, NumHighPrioTasks<4 >>)
415
+ ->RangeMultiplier(2 )
416
+ ->Range(1 << 6 , 1 << 8 );
417
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<3 >, NumHighPrioTasks<4 >>)
418
+ ->RangeMultiplier(2 )
419
+ ->Range(1 << 6 , 1 << 8 );
420
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<5 >, NumHighPrioTasks<4 >>)
421
+ ->RangeMultiplier(2 )
422
+ ->Range(1 << 5 , 1 << 7 );
423
+ BENCHMARK (BM_N_atomics_N_waiter_N_notifier<NotifyEveryNus<100 >, NumberOfAtomics<7 >, NumHighPrioTasks<4 >>)
424
+ ->RangeMultiplier(2 )
425
+ ->Range(1 << 3 , 1 << 5 );
414
426
415
427
BENCHMARK_MAIN ();
0 commit comments