10M elemre: [prenex@prenex-laptop magyarsort]$ ./ypsu.out constant 0.631s 0.103s 0.607s 0.162s 0.596s 0.958s asc 2.509s 0.101s 2.075s 0.467s 2.530s 0.767s desc 2.528s 0.101s 2.075s 0.540s 2.522s 0.616s ascasc 2.905s 0.101s 2.388s 0.533s 2.940s 3.404s ascdesc 2.497s 0.101s 2.032s 0.514s 2.527s 2.361s descasc 2.495s 0.100s 2.033s 0.534s 2.533s 0.732s descdesc 2.505s 0.101s 2.008s 0.534s 2.540s 3.659s smallrange 0.599s 0.101s 0.482s 0.418s 0.611s 1.116s rand 0.555s 0.101s 0.465s 0.875s 0.614s 1.724s worst 2.905s 0.103s 2.388s 0.875s 2.940s 3.659s 4rot copy magyar ska ska_copy std [prenex@prenex-laptop magyarsort]$ clang++ --std=c++17 -O2 ypsu.cpp -o ypsu.out In file included from ypsu.cpp:14: ./ska_sort.hpp:152:26: warning: result of comparison of constant 4294967296 with expression of type 'std::ptrdiff_t' (aka 'int') is always true [-Wtautological-constant-out-of-range-compare] if (num_elements <= (1ll << 32)) ~~~~~~~~~~~~ ^ ~~~~~~~~~~~ ./ska_sort.hpp:204:26: warning: result of comparison of constant 4294967296 with expression of type 'std::ptrdiff_t' (aka 'int') is always true [-Wtautological-constant-out-of-range-compare] if (num_elements <= (1ll << 32)) ~~~~~~~~~~~~ ^ ~~~~~~~~~~~ ./ska_sort.hpp:276:26: warning: result of comparison of constant 4294967296 with expression of type 'std::ptrdiff_t' (aka 'int') is always true [-Wtautological-constant-out-of-range-compare] if (num_elements <= (1ll << 32)) ~~~~~~~~~~~~ ^ ~~~~~~~~~~~ 3 warnings generated. [prenex@prenex-laptop magyarsort]$ ./ypsu.out constant 0.637s 0.103s 0.644s 0.165s 0.584s 0.932s asc 2.532s 0.101s 2.097s 0.513s 2.530s 0.704s desc 2.573s 0.101s 2.120s 0.547s 2.571s 0.563s ascasc 2.784s 0.101s 2.283s 0.531s 2.793s 3.051s ascdesc 2.532s 0.101s 2.073s 0.526s 2.527s 2.166s descasc 2.524s 0.101s 2.076s 0.574s 2.534s 0.674s descdesc 2.589s 0.101s 2.077s 0.523s 2.585s 3.314s smallrange 0.608s 0.101s 0.509s 0.426s 0.612s 1.097s rand 0.584s 0.101s 0.487s 0.831s 0.614s 1.716s worst 2.784s 0.103s 2.283s 0.831s 2.793s 3.314s 4rot copy magyar ska ska_copy std 40M elemre: [prenex@prenex-laptop magyarsort]$ ./ypsu.out constant 2.637s 0.389s 2.543s 0.660s 2.313s 4.275s asc 9.932s 0.377s 9.900s 2.389s 10.040s 3.071s desc 13.798s 0.425s 10.123s 3.439s 16.212s 2.676s ascasc 10.081s 0.383s 9.886s 2.598s 10.078s 14.247s ascdesc 9.733s 0.388s 9.714s 2.544s 9.834s 9.508s descasc 9.737s 0.384s 9.719s 4.203s 10.004s 3.665s descdesc 9.703s 0.387s 9.743s 2.501s 9.788s 15.057s smallrange 2.363s 0.385s 1.941s 1.783s 2.309s 4.584s rand 2.322s 0.396s 1.951s 3.934s 2.359s 7.781s worst 13.798s 0.425s 10.123s 4.203s 16.212s 15.057s 4rot copy magyar ska ska_copy std [prenex@prenex-laptop magyarsort]$ g++ --std=c++17 -O2 ypsu.cpp -o ypsu.out [prenex@prenex-laptop magyarsort]$ ./ypsu.out constant 2.380s 0.364s 2.412s 0.649s 2.325s 4.367s asc 9.712s 0.376s 13.027s 2.202s 10.010s 3.388s desc^C [prenex@prenex-laptop magyarsort]$ ./ypsu.out constant 2.330s 0.369s 2.430s 0.655s 2.343s 4.427s asc 9.687s 0.361s 9.519s 2.206s 9.912s 3.381s desc 9.591s 0.368s 9.500s 2.625s 9.748s 2.651s ascasc 9.877s 0.360s 9.502s 2.530s 10.022s 15.561s ascdesc 9.356s 0.369s 9.368s 2.377s 9.718s 10.204s descasc 9.731s 0.359s 9.399s 2.636s 9.895s 3.176s descdesc 9.681s 0.369s 9.394s 2.475s 9.833s 16.461s smallrange 2.356s 0.362s 1.907s 1.703s 2.453s 4.666s rand 2.313s 0.364s 1.892s 3.989s 2.767s 7.467s worst 9.877s 0.369s 9.519s 3.989s 10.022s 16.461s 4rot copy magyar ska ska_copy std