MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / run_cmp_counts

Function run_cmp_counts

examples/sort/bench_stable_sort.cpp:398–416  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

396
397template <typename T>
398void run_cmp_counts(const char * type_name) {
399 const size_t n = 100000;
400 const Pattern pats[] = { Pattern::Random, Pattern::Sorted, Pattern::Reverse, Pattern::Dups, Pattern::AllEqual };
401 std::printf("\n## comparator-call counts — %s, N=%zu (why the adaptive cells are real)\n\n", type_name, n);
402 std::printf("| pattern | std::stable | #3 byte | #3 typed | #1 merge | #4 index |\n");
403 std::printf("|------------|------------:|----------:|----------:|----------:|----------:|\n");
404 for (Pattern p : pats) {
405 auto in = make_pattern<T>(p, n, 0xC0FFEEu);
406 auto count = [&](auto fn) -> uint64_t { auto a = in; g_cmp = 0; fn(a); return g_cmp; };
407 uint64_t cs = count([](std::vector<T> & a) { std::stable_sort(a.begin(), a.end(), CountingLess<T>()); });
408 uint64_t cb = count([](std::vector<T> & a) { das_stable_sort_r(a.data(), a.size(), sizeof(T), key_less_counted); });
409 uint64_t ct = count([](std::vector<T> & a) { das_stable_sort(a.data(), a.data() + a.size(), CountingLess<T>()); });
410 uint64_t cm = count([](std::vector<T> & a) { das_stable_merge_r(a.data(), a.size(), sizeof(T), key_less_counted); });
411 uint64_t ci = count([](std::vector<T> & a) { das_stable_index_r(a.data(), a.size(), sizeof(T), key_less_counted); });
412 std::printf("| %-10s | %11llu | %9llu | %9llu | %9llu | %9llu |\n", pattern_name(p),
413 (unsigned long long)cs, (unsigned long long)cb, (unsigned long long)ct,
414 (unsigned long long)cm, (unsigned long long)ci);
415 }
416}
417
418} // anonymous
419

Callers

nothing calls this directly

Calls 12

printfFunction · 0.85
fnFunction · 0.85
countFunction · 0.85
das_stable_sort_rFunction · 0.85
das_stable_sortFunction · 0.85
das_stable_merge_rFunction · 0.85
das_stable_index_rFunction · 0.85
pattern_nameFunction · 0.85
beginMethod · 0.45
endMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected