MCPcopy Create free account
hub / github.com/cameron314/concurrentqueue / determineMaxOpsForBenchmark

Function determineMaxOpsForBenchmark

benchmarks/benchmarks.cpp:314–440  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

312
313template<typename TQueue, typename item_t>
314counter_t determineMaxOpsForBenchmark(benchmark_type_t benchmark, int nthreads, bool useTokens, unsigned int randSeed)
315{
316 switch (benchmark) {
317 case bench_balanced: {
318 return adjustForThreads(rampUpToMeasurableNumberOfMaxOps([&](counter_t ops) {
319 TQueue q;
320 RNG_t rng(randSeed * 1);
321 std::uniform_int_distribution<int> rand(0, 20);
322 double total = 0;
323 SystemTime start;
324 item_t item = 1;
325 for (counter_t i = 0; i != ops; ++i) {
326 start = getSystemTime();
327 q.enqueue(item);
328 total += getTimeDelta(start);
329 }
330 return total;
331 }), nthreads);
332 }
333 case bench_only_enqueue:
334 case bench_only_enqueue_prealloc:
335 case bench_mostly_enqueue: {
336 return adjustForThreads(rampUpToMeasurableNumberOfMaxOps([](counter_t ops) {
337 TQueue q;
338 item_t item = 1;
339 auto start = getSystemTime();
340 for (counter_t i = 0; i != ops; ++i) {
341 q.enqueue(item);
342 }
343 return getTimeDelta(start);
344 }), nthreads);
345 }
346 case bench_only_dequeue:
347 case bench_mostly_dequeue:
348 case bench_spmc:
349 case bench_spmc_preproduced:
350 case bench_mpsc: {
351 return adjustForThreads(rampUpToMeasurableNumberOfMaxOps([](counter_t ops) {
352 TQueue q;
353 item_t item = 1;
354 for (counter_t i = 0; i != ops; ++i) {
355 q.enqueue(item);
356 }
357 item_t item_rec;
358 auto start = getSystemTime();
359 for (counter_t i = 0; i != ops; ++i) {
360 q.try_dequeue(item_rec);
361 }
362 return getTimeDelta(start);
363 }), nthreads);
364 }
365 case bench_only_enqueue_bulk:
366 case bench_only_enqueue_bulk_prealloc:
367 case bench_mostly_enqueue_bulk: {
368 std::vector<item_t> data;
369 for (counter_t i = 0; i != BULK_BATCH_SIZE; ++i) {
370 data.push_back(i);
371 }

Callers

nothing calls this directly

Calls 13

adjustForThreadsFunction · 0.85
getSystemTimeFunction · 0.85
getTimeDeltaFunction · 0.85
assertClass · 0.85
enqueueMethod · 0.45
try_dequeueMethod · 0.45
push_backMethod · 0.45
enqueue_bulkMethod · 0.45
cbeginMethod · 0.45
sizeMethod · 0.45
try_dequeue_bulkMethod · 0.45

Tested by

no test coverage detected