MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / mainEntryExampleAverage

Function mainEntryExampleAverage

src/Common/examples/average.cpp:558–642  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

556}
557
558int mainEntryExampleAverage(int argc, char ** argv)
559{
560 size_t size = argc > 1 ? std::stoull(argv[1]) : 1000000000;
561 size_t variant = argc > 2 ? std::stoull(argv[2]) : 1;
562
563 PODArray<UInt8> keys(size);
564 PODArray<Float> values(size);
565
566 /// Fill source data
567 for (size_t i = 0; i < size; ++i)
568 {
569 keys[i] = static_cast<UInt8>(std::countr_zero(i + 1)); /// Make keys to have just slightly more realistic distribution.
570 values[i] = 1234.5; /// The distribution of values does not affect execution speed.
571 }
572
573 /// Aggregate
574 Stopwatch watch;
575 Float res{};
576
577 switch (variant)
578 {
579 case 0: res = baseline(keys, values); break;
580 case 1: res = implicit_zero(keys, values); break;
581 case 2: res = calculated_size(keys, values); break;
582 case 3: res = implicit_zero_and_calculated_size(keys, values); break;
583 case 4: res = init_out_of_the_loop(keys, values); break;
584 case 5: res = embedded_states(keys, values); break;
585 case 6: res = simple_lookup_table(keys, values); break;
586 case 7: res = simple_lookup_table_embedded_states(keys, values); break;
587 case 8: res = microsort<1>(keys, values); break;
588 case 9: res = baseline_baseline(keys, values); break;
589 case 10: res = buffered(keys, values); break;
590 case 11: res = really_unrolled<1>(keys, values); break;
591 case 12: res = another_unrolled_x4(keys, values); break;
592
593 case 32: res = unrolled<2>(keys, values); break;
594 case 34: res = unrolled<4>(keys, values); break;
595 case 36: res = unrolled<6>(keys, values); break;
596 case 38: res = unrolled<8>(keys, values); break;
597 case 316: res = unrolled<16>(keys, values); break;
598
599 case 52: res = embedded_states_unrolled<2>(keys, values); break;
600 case 54: res = embedded_states_unrolled<4>(keys, values); break;
601 case 56: res = embedded_states_unrolled<6>(keys, values); break;
602 case 58: res = embedded_states_unrolled<8>(keys, values); break;
603 case 516: res = embedded_states_unrolled<16>(keys, values); break;
604
605 case 62: res = simple_lookup_table_unrolled<2>(keys, values); break;
606 case 64: res = simple_lookup_table_unrolled<4>(keys, values); break;
607 case 66: res = simple_lookup_table_unrolled<6>(keys, values); break;
608 case 68: res = simple_lookup_table_unrolled<8>(keys, values); break;
609 case 616: res = simple_lookup_table_unrolled<16>(keys, values); break;
610
611 case 72: res = simple_lookup_table_embedded_states_unrolled<2>(keys, values); break;
612 case 74: res = simple_lookup_table_embedded_states_unrolled<4>(keys, values); break;
613 case 76: res = simple_lookup_table_embedded_states_unrolled<6>(keys, values); break;
614 case 78: res = simple_lookup_table_embedded_states_unrolled<8>(keys, values); break;
615 case 716: res = simple_lookup_table_embedded_states_unrolled<16>(keys, values); break;

Callers

nothing calls this directly

Calls 14

baselineFunction · 0.85
implicit_zeroFunction · 0.85
calculated_sizeFunction · 0.85
init_out_of_the_loopFunction · 0.85
embedded_statesFunction · 0.85
simple_lookup_tableFunction · 0.85
baseline_baselineFunction · 0.85
bufferedFunction · 0.85
another_unrolled_x4Function · 0.85
printFunction · 0.70

Tested by

no test coverage detected