[libcxx-commits] [PATCH] D127557: [libc++][ranges] Implement `ranges::sort`.

Konstantin Varlamov via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jun 14 22:47:59 PDT 2022


var-const added inline comments.


================
Comment at: libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/ranges.sort.pass.cpp:1
+//===----------------------------------------------------------------------===//
+//
----------------
var-const wrote:
> var-const wrote:
> > philnik wrote:
> > > Could you also add a benchmark for `ranges::sort` and make sure the numbers are within margin of error compared to `std::sort`? It would be really bad if the ranges version performed worse than the classic STL version.
> > Added a benchmark, but it looks like there's too much random variation on my machine for a meaningful comparison. Perhaps you'd be interested to run the two benchmarks on your machine?
> > 
> > There are ~300 benchmarks (288, to be precise). About 3/4 of those are faster with the ranges version (even 10 times faster in a few instances), but about 1/4 are slower. Most of the slower ones are within 15-20% of the classic version, but some are 2.5-3 times slower (e.g. `BM_Sort_string_SingleElement_16384`). I don't see any obvious pattern and also no reason for the ranges version to outperform the non-ranges version -- either I'm doing something wrong, or these benchmarks contain too much random variation to do a meaningful comparison.
> > 
> > Pasting the raw numbers below. I'm omitting the name of the ranges benchmark (it's always equivalent to the non-ranges one) and wall time. The columns are: benchmark name / classic CPU time, ns / ranges CPU time, ns / ranges CPU time divided by classic CPU time, %
> > 
> > ```
> > BM_Sort_uint32_Random_1	6.76	3.41	50.44%
> > BM_Sort_uint32_Random_4	15.3	4.09	26.73%
> > BM_Sort_uint32_Random_16	30.5	8.04	26.36%
> > BM_Sort_uint32_Random_64	51	14.9	29.22%
> > BM_Sort_uint32_Random_256	67.8	21.3	31.42%
> > BM_Sort_uint32_Random_1024	84.3	27.7	32.86%
> > BM_Sort_uint32_Random_16384	116	40.4	34.83%
> > BM_Sort_uint32_Random_262144	149	52.9	35.50%
> > BM_Sort_uint32_Ascending_1	6.7	3.44	51.34%
> > BM_Sort_uint32_Ascending_4	9.07	1.19	13.12%
> > BM_Sort_uint32_Ascending_16	4.13	0.713	17.26%
> > BM_Sort_uint32_Ascending_64	6	1.46	24.33%
> > BM_Sort_uint32_Ascending_256	4.99	1.58	31.66%
> > BM_Sort_uint32_Ascending_1024	4.76	1.51	31.72%
> > BM_Sort_uint32_Ascending_16384	4.66	1.44	30.90%
> > BM_Sort_uint32_Ascending_262144	4.68	1.45	30.98%
> > BM_Sort_uint32_Descending_1	6.85	3.41	49.78%
> > BM_Sort_uint32_Descending_4	9.09	1.41	15.51%
> > BM_Sort_uint32_Descending_16	37	3.04	8.22%
> > BM_Sort_uint32_Descending_64	11.4	2.32	20.35%
> > BM_Sort_uint32_Descending_256	10.4	2.44	23.46%
> > BM_Sort_uint32_Descending_1024	12.3	2.67	21.71%
> > BM_Sort_uint32_Descending_16384	12.5	2.47	19.76%
> > BM_Sort_uint32_Descending_262144	11.7	2.46	21.03%
> > BM_Sort_uint32_SingleElement_1	6.68	3.39	50.75%
> > BM_Sort_uint32_SingleElement_4	9.15	1.18	12.90%
> > BM_Sort_uint32_SingleElement_16	3.62	0.71	19.61%
> > BM_Sort_uint32_SingleElement_64	5.13	0.792	15.44%
> > BM_Sort_uint32_SingleElement_256	4.73	0.668	14.12%
> > BM_Sort_uint32_SingleElement_1024	4.66	0.626	13.43%
> > BM_Sort_uint32_SingleElement_16384	4.55	0.55	12.09%
> > BM_Sort_uint32_SingleElement_262144	4.56	0.548	12.02%
> > BM_Sort_uint32_PipeOrgan_1	6.65	3.44	51.73%
> > BM_Sort_uint32_PipeOrgan_4	9.09	1.24	13.64%
> > BM_Sort_uint32_PipeOrgan_16	11.9	1.61	13.53%
> > BM_Sort_uint32_PipeOrgan_64	36.4	3.66	10.05%
> > BM_Sort_uint32_PipeOrgan_256	15.4	2.69	17.47%
> > BM_Sort_uint32_PipeOrgan_1024	19.6	3.31	16.89%
> > BM_Sort_uint32_PipeOrgan_16384	24.5	3.83	15.63%
> > BM_Sort_uint32_PipeOrgan_262144	30.1	4.48	14.88%
> > BM_Sort_uint32_QuickSortAdversary_1	6.73	3.38	50.22%
> > BM_Sort_uint32_QuickSortAdversary_4	9.19	1.17	12.73%
> > BM_Sort_uint32_QuickSortAdversary_16	4.12	0.708	17.18%
> > BM_Sort_uint32_QuickSortAdversary_64	62.1	8.71	14.03%
> > BM_Sort_uint32_QuickSortAdversary_256	116	11.1	9.57%
> > BM_Sort_uint32_QuickSortAdversary_1024	176	29.3	16.65%
> > BM_Sort_uint32_QuickSortAdversary_16384	249	51.7	20.76%
> > BM_Sort_uint32_QuickSortAdversary_262144	306	58	18.95%
> > BM_Sort_uint64_Random_1	6.84	3.66	53.51%
> > BM_Sort_uint64_Random_4	15.7	4.36	27.77%
> > BM_Sort_uint64_Random_16	31.4	8.36	26.62%
> > BM_Sort_uint64_Random_64	51.2	15.1	29.49%
> > BM_Sort_uint64_Random_256	70.1	21.5	30.67%
> > BM_Sort_uint64_Random_1024	85.3	27.7	32.47%
> > BM_Sort_uint64_Random_16384	118	40.2	34.07%
> > BM_Sort_uint64_Random_262144	150	52.4	34.93%
> > BM_Sort_uint64_Ascending_1	6.92	3.4	49.13%
> > BM_Sort_uint64_Ascending_4	9.23	1.09	11.81%
> > BM_Sort_uint64_Ascending_16	3.65	0.721	19.75%
> > BM_Sort_uint64_Ascending_64	6.4	1.13	17.66%
> > BM_Sort_uint64_Ascending_256	5.17	1.27	24.56%
> > BM_Sort_uint64_Ascending_1024	4.99	1.2	24.05%
> > BM_Sort_uint64_Ascending_16384	4.7	1.14	24.26%
> > BM_Sort_uint64_Ascending_262144	4.62	1.13	24.46%
> > BM_Sort_uint64_Descending_1	6.67	3.61	54.12%
> > BM_Sort_uint64_Descending_4	9.25	1.45	15.68%
> > BM_Sort_uint64_Descending_16	36.9	2.86	7.75%
> > BM_Sort_uint64_Descending_64	12	2.12	17.67%
> > BM_Sort_uint64_Descending_256	11	2.03	18.45%
> > BM_Sort_uint64_Descending_1024	12.9	2.23	17.29%
> > BM_Sort_uint64_Descending_16384	12	2.06	17.17%
> > BM_Sort_uint64_Descending_262144	12	2.18	18.17%
> > BM_Sort_uint64_SingleElement_1	6.59	3.38	51.29%
> > BM_Sort_uint64_SingleElement_4	9.21	1.09	11.83%
> > BM_Sort_uint64_SingleElement_16	3.64	0.715	19.64%
> > BM_Sort_uint64_SingleElement_64	5.27	0.887	16.83%
> > BM_Sort_uint64_SingleElement_256	4.77	1.07	22.43%
> > BM_Sort_uint64_SingleElement_1024	4.73	0.923	19.51%
> > BM_Sort_uint64_SingleElement_16384	4.55	0.921	20.24%
> > BM_Sort_uint64_SingleElement_262144	4.59	0.938	20.44%
> > BM_Sort_uint64_PipeOrgan_1	6.65	3.6	54.14%
> > BM_Sort_uint64_PipeOrgan_4	9.06	1.14	12.58%
> > BM_Sort_uint64_PipeOrgan_16	12	1.41	11.75%
> > BM_Sort_uint64_PipeOrgan_64	36.8	3.47	9.43%
> > BM_Sort_uint64_PipeOrgan_256	15.4	2.56	16.62%
> > BM_Sort_uint64_PipeOrgan_1024	19.5	3.21	16.46%
> > BM_Sort_uint64_PipeOrgan_16384	24.4	3.78	15.49%
> > BM_Sort_uint64_PipeOrgan_262144	29.8	4.58	15.37%
> > BM_Sort_uint64_QuickSortAdversary_1	6.76	3.5	51.78%
> > BM_Sort_uint64_QuickSortAdversary_4	9.03	1.09	12.07%
> > BM_Sort_uint64_QuickSortAdversary_16	3.73	0.717	19.22%
> > BM_Sort_uint64_QuickSortAdversary_64	66.8	8.99	13.46%
> > BM_Sort_uint64_QuickSortAdversary_256	132	12	9.09%
> > BM_Sort_uint64_QuickSortAdversary_1024	189	30.5	16.14%
> > BM_Sort_uint64_QuickSortAdversary_16384	270	54.3	20.11%
> > BM_Sort_uint64_QuickSortAdversary_262144	326	68.2	20.92%
> > BM_Sort_pair<uint32, uint32>_Random_1	3.25	3.47	106.77%
> > BM_Sort_pair<uint32, uint32>_Random_4	5.67	5.91	104.23%
> > BM_Sort_pair<uint32, uint32>_Random_16	20.7	20.7	100.00%
> > BM_Sort_pair<uint32, uint32>_Random_64	31.2	30.5	97.76%
> > BM_Sort_pair<uint32, uint32>_Random_256	39.2	39.2	100.00%
> > BM_Sort_pair<uint32, uint32>_Random_1024	46.5	46.3	99.57%
> > BM_Sort_pair<uint32, uint32>_Random_16384	62.3	61.9	99.36%
> > BM_Sort_pair<uint32, uint32>_Random_262144	79.7	78.8	98.87%
> > BM_Sort_pair<uint32, uint32>_Ascending_1	3.19	4.15	130.09%
> > BM_Sort_pair<uint32, uint32>_Ascending_4	1.85	2.13	115.14%
> > BM_Sort_pair<uint32, uint32>_Ascending_16	2.42	2.46	101.65%
> > BM_Sort_pair<uint32, uint32>_Ascending_64	1.91	1.93	101.05%
> > BM_Sort_pair<uint32, uint32>_Ascending_256	1.99	2.02	101.51%
> > BM_Sort_pair<uint32, uint32>_Ascending_1024	1.91	1.96	102.62%
> > BM_Sort_pair<uint32, uint32>_Ascending_16384	1.82	1.87	102.75%
> > BM_Sort_pair<uint32, uint32>_Ascending_262144	1.82	1.85	101.65%
> > BM_Sort_pair<uint32, uint32>_Descending_1	3.2	3.71	115.94%
> > BM_Sort_pair<uint32, uint32>_Descending_4	2.56	2.56	100.00%
> > BM_Sort_pair<uint32, uint32>_Descending_16	5.45	5.26	96.51%
> > BM_Sort_pair<uint32, uint32>_Descending_64	4.35	3.94	90.57%
> > BM_Sort_pair<uint32, uint32>_Descending_256	3.79	3.52	92.88%
> > BM_Sort_pair<uint32, uint32>_Descending_1024	5.02	4.7	93.63%
> > BM_Sort_pair<uint32, uint32>_Descending_16384	4.78	4.5	94.14%
> > BM_Sort_pair<uint32, uint32>_Descending_262144	4.75	4.46	93.89%
> > BM_Sort_pair<uint32, uint32>_SingleElement_1	3.21	4.1	127.73%
> > BM_Sort_pair<uint32, uint32>_SingleElement_4	1.91	1.92	100.52%
> > BM_Sort_pair<uint32, uint32>_SingleElement_16	2.25	2.85	126.67%
> > BM_Sort_pair<uint32, uint32>_SingleElement_64	2.3	2.67	116.09%
> > BM_Sort_pair<uint32, uint32>_SingleElement_256	2.43	2.87	118.11%
> > BM_Sort_pair<uint32, uint32>_SingleElement_1024	2.3	2.71	117.83%
> > BM_Sort_pair<uint32, uint32>_SingleElement_16384	2.26	2.67	118.14%
> > BM_Sort_pair<uint32, uint32>_SingleElement_262144	2.27	2.66	117.18%
> > BM_Sort_pair<uint32, uint32>_PipeOrgan_1	3.18	3.63	114.15%
> > BM_Sort_pair<uint32, uint32>_PipeOrgan_4	2.18	2.21	101.38%
> > BM_Sort_pair<uint32, uint32>_PipeOrgan_16	5.27	5.14	97.53%
> > BM_Sort_pair<uint32, uint32>_PipeOrgan_64	5.65	5.64	99.82%
> > BM_Sort_pair<uint32, uint32>_PipeOrgan_256	7.51	7.46	99.33%
> > BM_Sort_pair<uint32, uint32>_PipeOrgan_1024	9.48	9.5	100.21%
> > BM_Sort_pair<uint32, uint32>_PipeOrgan_16384	10.6	10.6	100.00%
> > BM_Sort_pair<uint32, uint32>_PipeOrgan_262144	12.6	12.6	100.00%
> > BM_Sort_pair<uint32, uint32>_QuickSortAdversary_1	3.17	4.11	129.65%
> > BM_Sort_pair<uint32, uint32>_QuickSortAdversary_4	2.3	2.47	107.39%
> > BM_Sort_pair<uint32, uint32>_QuickSortAdversary_16	5.29	5.13	96.98%
> > BM_Sort_pair<uint32, uint32>_QuickSortAdversary_64	8.51	8.16	95.89%
> > BM_Sort_pair<uint32, uint32>_QuickSortAdversary_256	11.6	11.3	97.41%
> > BM_Sort_pair<uint32, uint32>_QuickSortAdversary_1024	14.1	13.3	94.33%
> > BM_Sort_pair<uint32, uint32>_QuickSortAdversary_16384	33.1	32.6	98.49%
> > BM_Sort_pair<uint32, uint32>_QuickSortAdversary_262144	38.3	37.9	98.96%
> > BM_Sort_tuple<uint32, uint64, uint32>_Random_1	3.48	4.36	125.29%
> > BM_Sort_tuple<uint32, uint64, uint32>_Random_4	6.27	6.57	104.78%
> > BM_Sort_tuple<uint32, uint64, uint32>_Random_16	25.6	24.6	96.09%
> > BM_Sort_tuple<uint32, uint64, uint32>_Random_64	38.2	35	91.62%
> > BM_Sort_tuple<uint32, uint64, uint32>_Random_256	45	41.1	91.33%
> > BM_Sort_tuple<uint32, uint64, uint32>_Random_1024	53.1	47.6	89.64%
> > BM_Sort_tuple<uint32, uint64, uint32>_Random_16384	67.8	60.3	88.94%
> > BM_Sort_tuple<uint32, uint64, uint32>_Random_262144	86.1	76.7	89.08%
> > BM_Sort_tuple<uint32, uint64, uint32>_Ascending_1	3.46	3.69	106.65%
> > BM_Sort_tuple<uint32, uint64, uint32>_Ascending_4	2.29	2.28	99.56%
> > BM_Sort_tuple<uint32, uint64, uint32>_Ascending_16	3.39	3.03	89.38%
> > BM_Sort_tuple<uint32, uint64, uint32>_Ascending_64	3.14	3.33	106.05%
> > BM_Sort_tuple<uint32, uint64, uint32>_Ascending_256	3.13	3.42	109.27%
> > BM_Sort_tuple<uint32, uint64, uint32>_Ascending_1024	3.08	3.34	108.44%
> > BM_Sort_tuple<uint32, uint64, uint32>_Ascending_16384	2.92	3.09	105.82%
> > BM_Sort_tuple<uint32, uint64, uint32>_Ascending_262144	3.11	3.24	104.18%
> > BM_Sort_tuple<uint32, uint64, uint32>_Descending_1	3.97	3.88	97.73%
> > BM_Sort_tuple<uint32, uint64, uint32>_Descending_4	3.93	3.28	83.46%
> > BM_Sort_tuple<uint32, uint64, uint32>_Descending_16	6.2	5.23	84.35%
> > BM_Sort_tuple<uint32, uint64, uint32>_Descending_64	5.26	4.64	88.21%
> > BM_Sort_tuple<uint32, uint64, uint32>_Descending_256	4.76	4.31	90.55%
> > BM_Sort_tuple<uint32, uint64, uint32>_Descending_1024	6.23	5.35	85.87%
> > BM_Sort_tuple<uint32, uint64, uint32>_Descending_16384	5.91	5.15	87.14%
> > BM_Sort_tuple<uint32, uint64, uint32>_Descending_262144	6.67	6.19	92.80%
> > BM_Sort_tuple<uint32, uint64, uint32>_SingleElement_1	3.5	3.69	105.43%
> > BM_Sort_tuple<uint32, uint64, uint32>_SingleElement_4	2.61	2.33	89.27%
> > BM_Sort_tuple<uint32, uint64, uint32>_SingleElement_16	3.43	3.31	96.50%
> > BM_Sort_tuple<uint32, uint64, uint32>_SingleElement_64	4.08	3.91	95.83%
> > BM_Sort_tuple<uint32, uint64, uint32>_SingleElement_256	4.35	4.29	98.62%
> > BM_Sort_tuple<uint32, uint64, uint32>_SingleElement_1024	4.17	4.18	100.24%
> > BM_Sort_tuple<uint32, uint64, uint32>_SingleElement_16384	3.8	3.79	99.74%
> > BM_Sort_tuple<uint32, uint64, uint32>_SingleElement_262144	3.83	3.84	100.26%
> > BM_Sort_tuple<uint32, uint64, uint32>_PipeOrgan_1	3.47	3.88	111.82%
> > BM_Sort_tuple<uint32, uint64, uint32>_PipeOrgan_4	2.46	2.52	102.44%
> > BM_Sort_tuple<uint32, uint64, uint32>_PipeOrgan_16	6.48	5.76	88.89%
> > BM_Sort_tuple<uint32, uint64, uint32>_PipeOrgan_64	7.46	6.55	87.80%
> > BM_Sort_tuple<uint32, uint64, uint32>_PipeOrgan_256	10.2	8.11	79.51%
> > BM_Sort_tuple<uint32, uint64, uint32>_PipeOrgan_1024	11.4	9.95	87.28%
> > BM_Sort_tuple<uint32, uint64, uint32>_PipeOrgan_16384	13	11.6	89.23%
> > BM_Sort_tuple<uint32, uint64, uint32>_PipeOrgan_262144	16	14.6	91.25%
> > BM_Sort_tuple<uint32, uint64, uint32>_QuickSortAdversary_1	3.49	3.69	105.73%
> > BM_Sort_tuple<uint32, uint64, uint32>_QuickSortAdversary_4	2.83	2.65	93.64%
> > BM_Sort_tuple<uint32, uint64, uint32>_QuickSortAdversary_16	6.3	5.21	82.70%
> > BM_Sort_tuple<uint32, uint64, uint32>_QuickSortAdversary_64	10.8	9.47	87.69%
> > BM_Sort_tuple<uint32, uint64, uint32>_QuickSortAdversary_256	15.4	12.7	82.47%
> > BM_Sort_tuple<uint32, uint64, uint32>_QuickSortAdversary_1024	23.4	19.5	83.33%
> > BM_Sort_tuple<uint32, uint64, uint32>_QuickSortAdversary_16384	47	41.4	88.09%
> > BM_Sort_tuple<uint32, uint64, uint32>_QuickSortAdversary_262144	54.5	46.3	84.95%
> > BM_Sort_string_Random_1	4.25	4.5	105.88%
> > BM_Sort_string_Random_4	16.7	16.4	98.20%
> > BM_Sort_string_Random_16	45.8	45.5	99.34%
> > BM_Sort_string_Random_64	71.1	69.8	98.17%
> > BM_Sort_string_Random_256	90.1	88.4	98.11%
> > BM_Sort_string_Random_1024	108	109	100.93%
> > BM_Sort_string_Random_16384	172	174	101.16%
> > BM_Sort_string_Random_262144	283	285	100.71%
> > BM_Sort_string_Ascending_1	4.23	4.8	113.48%
> > BM_Sort_string_Ascending_4	9.8	9.51	97.04%
> > BM_Sort_string_Ascending_16	16.6	16.8	101.20%
> > BM_Sort_string_Ascending_64	21.9	21.7	99.09%
> > BM_Sort_string_Ascending_256	21.4	21.1	98.60%
> > BM_Sort_string_Ascending_1024	21.1	20.9	99.05%
> > BM_Sort_string_Ascending_16384	38.7	35.1	90.70%
> > BM_Sort_string_Ascending_262144	45.4	43.6	96.04%
> > BM_Sort_string_Descending_1	4.23	4.89	115.60%
> > BM_Sort_string_Descending_4	11.8	13.2	111.86%
> > BM_Sort_string_Descending_16	25.3	26.4	104.35%
> > BM_Sort_string_Descending_64	29.7	30.7	103.37%
> > BM_Sort_string_Descending_256	27.3	29.6	108.42%
> > BM_Sort_string_Descending_1024	31.6	31.4	99.37%
> > BM_Sort_string_Descending_16384	46.5	47	101.08%
> > BM_Sort_string_Descending_262144	78.5	77.5	98.73%
> > BM_Sort_string_SingleElement_1	4.21	4.57	108.55%
> > BM_Sort_string_SingleElement_4	9.06	9.64	106.40%
> > BM_Sort_string_SingleElement_16	18.3	17.9	97.81%
> > BM_Sort_string_SingleElement_64	26.8	28.4	105.97%
> > BM_Sort_string_SingleElement_256	22.3	21.7	97.31%
> > BM_Sort_string_SingleElement_1024	19.5	20.1	103.08%
> > BM_Sort_string_SingleElement_16384	17.5	52.6	300.57%
> > BM_Sort_string_SingleElement_262144	19	48.2	253.68%
> > BM_Sort_string_PipeOrgan_1	4.18	6.79	162.44%
> > BM_Sort_string_PipeOrgan_4	10.3	14.1	136.89%
> > BM_Sort_string_PipeOrgan_16	25	29.7	118.80%
> > BM_Sort_string_PipeOrgan_64	37.5	39.2	104.53%
> > BM_Sort_string_PipeOrgan_256	45	45.7	101.56%
> > BM_Sort_string_PipeOrgan_1024	52.8	52.3	99.05%
> > BM_Sort_string_PipeOrgan_16384	72.4	138	190.61%
> > BM_Sort_string_PipeOrgan_262144	122	317	259.84%
> > BM_Sort_string_QuickSortAdversary_1	4.2	6.63	157.86%
> > BM_Sort_string_QuickSortAdversary_4	16.2	23	141.98%
> > BM_Sort_string_QuickSortAdversary_16	44.7	67.2	150.34%
> > BM_Sort_string_QuickSortAdversary_64	69.2	103	148.84%
> > BM_Sort_string_QuickSortAdversary_256	87.9	127	144.48%
> > BM_Sort_string_QuickSortAdversary_1024	106	157	148.11%
> > BM_Sort_string_QuickSortAdversary_16384	170	176	103.53%
> > BM_Sort_string_QuickSortAdversary_262144	269	263	97.77%
> > BM_Sort_float_Random_1	6.56	3.65	55.64%
> > BM_Sort_float_Random_4	15.1	4.92	32.58%
> > BM_Sort_float_Random_16	31.5	8.83	28.03%
> > BM_Sort_float_Random_64	51.7	15.4	29.79%
> > BM_Sort_float_Random_256	68.7	21.7	31.59%
> > BM_Sort_float_Random_1024	85.6	27.9	32.59%
> > BM_Sort_float_Random_16384	121	40	33.06%
> > BM_Sort_float_Random_262144	150	92	61.33%
> > BM_Sort_float_Ascending_1	6.6	11.4	172.73%
> > BM_Sort_float_Ascending_4	9.04	3.73	41.26%
> > BM_Sort_float_Ascending_16	3.71	2.82	76.01%
> > BM_Sort_float_Ascending_64	6.04	3.48	57.62%
> > BM_Sort_float_Ascending_256	4.99	2.86	57.31%
> > BM_Sort_float_Ascending_1024	4.74	2.24	47.26%
> > BM_Sort_float_Ascending_16384	4.59	1.85	40.31%
> > BM_Sort_float_Ascending_262144	4.58	1.64	35.81%
> > BM_Sort_float_Descending_1	6.54	5.87	89.76%
> > BM_Sort_float_Descending_4	9.03	2.34	25.91%
> > BM_Sort_float_Descending_16	37.8	5.22	13.81%
> > BM_Sort_float_Descending_64	11.5	2.77	24.09%
> > BM_Sort_float_Descending_256	10.3	2.65	25.73%
> > BM_Sort_float_Descending_1024	12.3	2.92	23.74%
> > BM_Sort_float_Descending_16384	11.8	2.65	22.46%
> > BM_Sort_float_Descending_262144	11.7	2.65	22.65%
> > BM_Sort_float_SingleElement_1	6.6	4.68	70.91%
> > BM_Sort_float_SingleElement_4	9	1.65	18.33%
> > BM_Sort_float_SingleElement_16	3.72	1.34	36.02%
> > BM_Sort_float_SingleElement_64	4.89	1.45	29.65%
> > BM_Sort_float_SingleElement_256	4.45	1.54	34.61%
> > BM_Sort_float_SingleElement_1024	4.42	1.41	31.90%
> > BM_Sort_float_SingleElement_16384	4.26	1.29	30.28%
> > BM_Sort_float_SingleElement_262144	4.26	1.31	30.75%
> > BM_Sort_float_PipeOrgan_1	6.88	5.76	83.72%
> > BM_Sort_float_PipeOrgan_4	9.05	1.5	16.57%
> > BM_Sort_float_PipeOrgan_16	12.4	1.92	15.48%
> > BM_Sort_float_PipeOrgan_64	38	3.96	10.42%
> > BM_Sort_float_PipeOrgan_256	15.8	2.39	15.13%
> > BM_Sort_float_PipeOrgan_1024	20.1	3.13	15.57%
> > BM_Sort_float_PipeOrgan_16384	25.1	3.52	14.02%
> > BM_Sort_float_PipeOrgan_262144	30.6	4.11	13.43%
> > BM_Sort_float_QuickSortAdversary_1	6.54	3.19	48.78%
> > BM_Sort_float_QuickSortAdversary_4	9.15	2.6	28.42%
> > BM_Sort_float_QuickSortAdversary_16	3.77	2.93	77.72%
> > BM_Sort_float_QuickSortAdversary_64	62.8	34.6	55.10%
> > BM_Sort_float_QuickSortAdversary_256	117	48.5	41.45%
> > BM_Sort_float_QuickSortAdversary_1024	177	121	68.36%
> > BM_Sort_float_QuickSortAdversary_16384	250	226	90.40%
> > BM_Sort_float_QuickSortAdversary_262144	307	249	81.11%
> > ```
> I did a few more runs of the benchmarks and got similar wide distribution in the results. This convinced me that there is too much variation between different runs, so I quickly hacked together a combined benchmark which runs the classic and the ranges versions right after each other for each input.
> 
> The results are a lot more reasonable: most are within 5% and almost all are within 10%, with just 2 outliers (`BM_RangesSort_float_Ascending_16384_Ranges` is 13.86% slower in the ranges version, and `BM_RangesSort_float_Descending_1_Ranges` is 25.73% faster in the ranges version). The outliers follow each other in quick succession, leading me to believe both of them are part of some random fluctuation in CPU load. Moreover, the ranges version outperforms the classic version more often than the other way round (though I don't see a reason for it and presume it's not meaningful).
> 
> All in all, I don't see a reason to worry (differences seem to be within the error margin, and the ranges version has a slight edge on average) -- but please point out if anything looks worrisome to you.
> 
> 
> 
> 
> Raw data below. Columns are: benchmark name / CPU time, ns / CPU time for ranges divided by CPU time for classic, % / Previous column - 100% (negative number means the ranges version is faster):
> ```
> BM_RangesSort_uint32_Random_1_Classic	4.15		
> BM_RangesSort_uint32_Random_1_Ranges	3.76	90.60%	-9.40%
> BM_RangesSort_uint32_Random_4_Classic	5		
> BM_RangesSort_uint32_Random_4_Ranges	4.94	98.80%	-1.20%
> BM_RangesSort_uint32_Random_16_Classic	8.03		
> BM_RangesSort_uint32_Random_16_Ranges	8.06	100.37%	0.37%
> BM_RangesSort_uint32_Random_64_Classic	14.5		
> BM_RangesSort_uint32_Random_64_Ranges	14.5	100.00%	0.00%
> BM_RangesSort_uint32_Random_256_Classic	20.4		
> BM_RangesSort_uint32_Random_256_Ranges	20.4	100.00%	0.00%
> BM_RangesSort_uint32_Random_1024_Classic	26.3		
> BM_RangesSort_uint32_Random_1024_Ranges	26.3	100.00%	0.00%
> BM_RangesSort_uint32_Random_16384_Classic	38		
> BM_RangesSort_uint32_Random_16384_Ranges	38.1	100.26%	0.26%
> BM_RangesSort_uint32_Random_262144_Classic	49.9		
> BM_RangesSort_uint32_Random_262144_Ranges	50.4	101.00%	1.00%
> BM_RangesSort_uint32_Ascending_1_Classic	4.12		
> BM_RangesSort_uint32_Ascending_1_Ranges	3.83	92.96%	-7.04%
> BM_RangesSort_uint32_Ascending_4_Classic	1.3		
> BM_RangesSort_uint32_Ascending_4_Ranges	1.14	87.69%	-12.31%
> BM_RangesSort_uint32_Ascending_16_Classic	0.865		
> BM_RangesSort_uint32_Ascending_16_Ranges	0.887	102.54%	2.54%
> BM_RangesSort_uint32_Ascending_64_Classic	0.948		
> BM_RangesSort_uint32_Ascending_64_Ranges	0.961	101.37%	1.37%
> BM_RangesSort_uint32_Ascending_256_Classic	1.23		
> BM_RangesSort_uint32_Ascending_256_Ranges	1.05	85.37%	-14.63%
> BM_RangesSort_uint32_Ascending_1024_Classic	0.896		
> BM_RangesSort_uint32_Ascending_1024_Ranges	0.909	101.45%	1.45%
> BM_RangesSort_uint32_Ascending_16384_Classic	0.817		
> BM_RangesSort_uint32_Ascending_16384_Ranges	0.811	99.27%	-0.73%
> BM_RangesSort_uint32_Ascending_262144_Classic	0.808		
> BM_RangesSort_uint32_Ascending_262144_Ranges	0.805	99.63%	-0.37%
> BM_RangesSort_uint32_Descending_1_Classic	4.27		
> BM_RangesSort_uint32_Descending_1_Ranges	3.88	90.87%	-9.13%
> BM_RangesSort_uint32_Descending_4_Classic	1.65		
> BM_RangesSort_uint32_Descending_4_Ranges	1.58	95.76%	-4.24%
> BM_RangesSort_uint32_Descending_16_Classic	4.68		
> BM_RangesSort_uint32_Descending_16_Ranges	4.71	100.64%	0.64%
> BM_RangesSort_uint32_Descending_64_Classic	1.68		
> BM_RangesSort_uint32_Descending_64_Ranges	1.67	99.40%	-0.60%
> BM_RangesSort_uint32_Descending_256_Classic	1.66		
> BM_RangesSort_uint32_Descending_256_Ranges	1.62	97.59%	-2.41%
> BM_RangesSort_uint32_Descending_1024_Classic	1.88		
> BM_RangesSort_uint32_Descending_1024_Ranges	1.89	100.53%	0.53%
> BM_RangesSort_uint32_Descending_16384_Classic	1.62		
> BM_RangesSort_uint32_Descending_16384_Ranges	1.6	98.77%	-1.23%
> BM_RangesSort_uint32_Descending_262144_Classic	1.6		
> BM_RangesSort_uint32_Descending_262144_Ranges	1.61	100.63%	0.63%
> BM_RangesSort_uint32_SingleElement_1_Classic	4.21		
> BM_RangesSort_uint32_SingleElement_1_Ranges	3.94	93.59%	-6.41%
> BM_RangesSort_uint32_SingleElement_4_Classic	1.29		
> BM_RangesSort_uint32_SingleElement_4_Ranges	1.16	89.92%	-10.08%
> BM_RangesSort_uint32_SingleElement_16_Classic	0.871		
> BM_RangesSort_uint32_SingleElement_16_Ranges	0.91	104.48%	4.48%
> BM_RangesSort_uint32_SingleElement_64_Classic	1.12		
> BM_RangesSort_uint32_SingleElement_64_Ranges	1.11	99.11%	-0.89%
> BM_RangesSort_uint32_SingleElement_256_Classic	1.12		
> BM_RangesSort_uint32_SingleElement_256_Ranges	1.12	100.00%	0.00%
> BM_RangesSort_uint32_SingleElement_1024_Classic	1.05		
> BM_RangesSort_uint32_SingleElement_1024_Ranges	1.06	100.95%	0.95%
> BM_RangesSort_uint32_SingleElement_16384_Classic	1.04		
> BM_RangesSort_uint32_SingleElement_16384_Ranges	1.03	99.04%	-0.96%
> BM_RangesSort_uint32_SingleElement_262144_Classic	1.04		
> BM_RangesSort_uint32_SingleElement_262144_Ranges	1.03	99.04%	-0.96%
> BM_RangesSort_uint32_PipeOrgan_1_Classic	4.24		
> BM_RangesSort_uint32_PipeOrgan_1_Ranges	3.87	91.27%	-8.73%
> BM_RangesSort_uint32_PipeOrgan_4_Classic	1.35		
> BM_RangesSort_uint32_PipeOrgan_4_Ranges	1.16	85.93%	-14.07%
> BM_RangesSort_uint32_PipeOrgan_16_Classic	1.86		
> BM_RangesSort_uint32_PipeOrgan_16_Ranges	1.87	100.54%	0.54%
> BM_RangesSort_uint32_PipeOrgan_64_Classic	4.58		
> BM_RangesSort_uint32_PipeOrgan_64_Ranges	4.69	102.40%	2.40%
> BM_RangesSort_uint32_PipeOrgan_256_Classic	2.47		
> BM_RangesSort_uint32_PipeOrgan_256_Ranges	2.54	102.83%	2.83%
> BM_RangesSort_uint32_PipeOrgan_1024_Classic	3.15		
> BM_RangesSort_uint32_PipeOrgan_1024_Ranges	3.13	99.37%	-0.63%
> BM_RangesSort_uint32_PipeOrgan_16384_Classic	3.49		
> BM_RangesSort_uint32_PipeOrgan_16384_Ranges	3.54	101.43%	1.43%
> BM_RangesSort_uint32_PipeOrgan_262144_Classic	4.19		
> BM_RangesSort_uint32_PipeOrgan_262144_Ranges	4.19	100.00%	0.00%
> BM_RangesSort_uint32_QuickSortAdversary_1_Classic	4.18		
> BM_RangesSort_uint32_QuickSortAdversary_1_Ranges	3.82	91.39%	-8.61%
> BM_RangesSort_uint32_QuickSortAdversary_4_Classic	1.28		
> BM_RangesSort_uint32_QuickSortAdversary_4_Ranges	1.16	90.63%	-9.38%
> BM_RangesSort_uint32_QuickSortAdversary_16_Classic	0.865		
> BM_RangesSort_uint32_QuickSortAdversary_16_Ranges	0.882	101.97%	1.97%
> BM_RangesSort_uint32_QuickSortAdversary_64_Classic	9.65		
> BM_RangesSort_uint32_QuickSortAdversary_64_Ranges	9.59	99.38%	-0.62%
> BM_RangesSort_uint32_QuickSortAdversary_256_Classic	13.3		
> BM_RangesSort_uint32_QuickSortAdversary_256_Ranges	13.4	100.75%	0.75%
> BM_RangesSort_uint32_QuickSortAdversary_1024_Classic	40		
> BM_RangesSort_uint32_QuickSortAdversary_1024_Ranges	39.7	99.25%	-0.75%
> BM_RangesSort_uint32_QuickSortAdversary_16384_Classic	69.4		
> BM_RangesSort_uint32_QuickSortAdversary_16384_Ranges	69.1	99.57%	-0.43%
> BM_RangesSort_uint32_QuickSortAdversary_262144_Classic	77.3		
> BM_RangesSort_uint32_QuickSortAdversary_262144_Ranges	80.2	103.75%	3.75%
> BM_RangesSort_uint64_Random_1_Classic	4.3		
> BM_RangesSort_uint64_Random_1_Ranges	3.73	86.74%	-13.26%
> BM_RangesSort_uint64_Random_4_Classic	4.91		
> BM_RangesSort_uint64_Random_4_Ranges	4.83	98.37%	-1.63%
> BM_RangesSort_uint64_Random_16_Classic	9.08		
> BM_RangesSort_uint64_Random_16_Ranges	9.11	100.33%	0.33%
> BM_RangesSort_uint64_Random_64_Classic	15.6		
> BM_RangesSort_uint64_Random_64_Ranges	15.6	100.00%	0.00%
> BM_RangesSort_uint64_Random_256_Classic	21.5		
> BM_RangesSort_uint64_Random_256_Ranges	21.7	100.93%	0.93%
> BM_RangesSort_uint64_Random_1024_Classic	27.7		
> BM_RangesSort_uint64_Random_1024_Ranges	27.9	100.72%	0.72%
> BM_RangesSort_uint64_Random_16384_Classic	39.9		
> BM_RangesSort_uint64_Random_16384_Ranges	39.7	99.50%	-0.50%
> BM_RangesSort_uint64_Random_262144_Classic	51		
> BM_RangesSort_uint64_Random_262144_Ranges	51.3	100.59%	0.59%
> BM_RangesSort_uint64_Ascending_1_Classic	4.24		
> BM_RangesSort_uint64_Ascending_1_Ranges	3.91	92.22%	-7.78%
> BM_RangesSort_uint64_Ascending_4_Classic	1.38		
> BM_RangesSort_uint64_Ascending_4_Ranges	1.22	88.41%	-11.59%
> BM_RangesSort_uint64_Ascending_16_Classic	1.07		
> BM_RangesSort_uint64_Ascending_16_Ranges	1.08	100.93%	0.93%
> BM_RangesSort_uint64_Ascending_64_Classic	1.03		
> BM_RangesSort_uint64_Ascending_64_Ranges	1.03	100.00%	0.00%
> BM_RangesSort_uint64_Ascending_256_Classic	1.17		
> BM_RangesSort_uint64_Ascending_256_Ranges	1.15	98.29%	-1.71%
> BM_RangesSort_uint64_Ascending_1024_Classic	1.02		
> BM_RangesSort_uint64_Ascending_1024_Ranges	1.02	100.00%	0.00%
> BM_RangesSort_uint64_Ascending_16384_Classic	0.919		
> BM_RangesSort_uint64_Ascending_16384_Ranges	0.944	102.72%	2.72%
> BM_RangesSort_uint64_Ascending_262144_Classic	0.972		
> BM_RangesSort_uint64_Ascending_262144_Ranges	0.992	102.06%	2.06%
> BM_RangesSort_uint64_Descending_1_Classic	4.28		
> BM_RangesSort_uint64_Descending_1_Ranges	3.81	89.02%	-10.98%
> BM_RangesSort_uint64_Descending_4_Classic	1.57		
> BM_RangesSort_uint64_Descending_4_Ranges	1.56	99.36%	-0.64%
> BM_RangesSort_uint64_Descending_16_Classic	4.39		
> BM_RangesSort_uint64_Descending_16_Ranges	4.39	100.00%	0.00%
> BM_RangesSort_uint64_Descending_64_Classic	1.8		
> BM_RangesSort_uint64_Descending_64_Ranges	1.8	100.00%	0.00%
> BM_RangesSort_uint64_Descending_256_Classic	1.85		
> BM_RangesSort_uint64_Descending_256_Ranges	1.87	101.08%	1.08%
> BM_RangesSort_uint64_Descending_1024_Classic	1.96		
> BM_RangesSort_uint64_Descending_1024_Ranges	1.95	99.49%	-0.51%
> BM_RangesSort_uint64_Descending_16384_Classic	1.63		
> BM_RangesSort_uint64_Descending_16384_Ranges	1.64	100.61%	0.61%
> BM_RangesSort_uint64_Descending_262144_Classic	1.78		
> BM_RangesSort_uint64_Descending_262144_Ranges	1.84	103.37%	3.37%
> BM_RangesSort_uint64_SingleElement_1_Classic	4.16		
> BM_RangesSort_uint64_SingleElement_1_Ranges	4.01	96.39%	-3.61%
> BM_RangesSort_uint64_SingleElement_4_Classic	1.4		
> BM_RangesSort_uint64_SingleElement_4_Ranges	1.21	86.43%	-13.57%
> BM_RangesSort_uint64_SingleElement_16_Classic	1.07		
> BM_RangesSort_uint64_SingleElement_16_Ranges	1.08	100.93%	0.93%
> BM_RangesSort_uint64_SingleElement_64_Classic	0.889		
> BM_RangesSort_uint64_SingleElement_64_Ranges	0.908	102.14%	2.14%
> BM_RangesSort_uint64_SingleElement_256_Classic	0.96		
> BM_RangesSort_uint64_SingleElement_256_Ranges	0.969	100.94%	0.94%
> BM_RangesSort_uint64_SingleElement_1024_Classic	0.824		
> BM_RangesSort_uint64_SingleElement_1024_Ranges	0.845	102.55%	2.55%
> BM_RangesSort_uint64_SingleElement_16384_Classic	0.838		
> BM_RangesSort_uint64_SingleElement_16384_Ranges	0.83	99.05%	-0.95%
> BM_RangesSort_uint64_SingleElement_262144_Classic	0.931		
> BM_RangesSort_uint64_SingleElement_262144_Ranges	0.936	100.54%	0.54%
> BM_RangesSort_uint64_PipeOrgan_1_Classic	4.36		
> BM_RangesSort_uint64_PipeOrgan_1_Ranges	3.89	89.22%	-10.78%
> BM_RangesSort_uint64_PipeOrgan_4_Classic	1.42		
> BM_RangesSort_uint64_PipeOrgan_4_Ranges	1.33	93.66%	-6.34%
> BM_RangesSort_uint64_PipeOrgan_16_Classic	2.06		
> BM_RangesSort_uint64_PipeOrgan_16_Ranges	2	97.09%	-2.91%
> BM_RangesSort_uint64_PipeOrgan_64_Classic	4.84		
> BM_RangesSort_uint64_PipeOrgan_64_Ranges	4.77	98.55%	-1.45%
> BM_RangesSort_uint64_PipeOrgan_256_Classic	2.68		
> BM_RangesSort_uint64_PipeOrgan_256_Ranges	2.64	98.51%	-1.49%
> BM_RangesSort_uint64_PipeOrgan_1024_Classic	3.38		
> BM_RangesSort_uint64_PipeOrgan_1024_Ranges	3.29	97.34%	-2.66%
> BM_RangesSort_uint64_PipeOrgan_16384_Classic	3.83		
> BM_RangesSort_uint64_PipeOrgan_16384_Ranges	3.88	101.31%	1.31%
> BM_RangesSort_uint64_PipeOrgan_262144_Classic	4.62		
> BM_RangesSort_uint64_PipeOrgan_262144_Ranges	4.58	99.13%	-0.87%
> BM_RangesSort_uint64_QuickSortAdversary_1_Classic	4.05		
> BM_RangesSort_uint64_QuickSortAdversary_1_Ranges	3.86	95.31%	-4.69%
> BM_RangesSort_uint64_QuickSortAdversary_4_Classic	1.35		
> BM_RangesSort_uint64_QuickSortAdversary_4_Ranges	1.21	89.63%	-10.37%
> BM_RangesSort_uint64_QuickSortAdversary_16_Classic	1.08		
> BM_RangesSort_uint64_QuickSortAdversary_16_Ranges	1.08	100.00%	0.00%
> BM_RangesSort_uint64_QuickSortAdversary_64_Classic	10.7		
> BM_RangesSort_uint64_QuickSortAdversary_64_Ranges	10.8	100.93%	0.93%
> BM_RangesSort_uint64_QuickSortAdversary_256_Classic	14.5		
> BM_RangesSort_uint64_QuickSortAdversary_256_Ranges	14.6	100.69%	0.69%
> BM_RangesSort_uint64_QuickSortAdversary_1024_Classic	36.6		
> BM_RangesSort_uint64_QuickSortAdversary_1024_Ranges	36.9	100.82%	0.82%
> BM_RangesSort_uint64_QuickSortAdversary_16384_Classic	65.4		
> BM_RangesSort_uint64_QuickSortAdversary_16384_Ranges	65.5	100.15%	0.15%
> BM_RangesSort_uint64_QuickSortAdversary_262144_Classic	81.3		
> BM_RangesSort_uint64_QuickSortAdversary_262144_Ranges	81.7	100.49%	0.49%
> BM_RangesSort_pair<uint32, uint32>_Random_1_Classic	4.52		
> BM_RangesSort_pair<uint32, uint32>_Random_1_Ranges	4	88.50%	-11.50%
> BM_RangesSort_pair<uint32, uint32>_Random_4_Classic	6.81		
> BM_RangesSort_pair<uint32, uint32>_Random_4_Ranges	6.69	98.24%	-1.76%
> BM_RangesSort_pair<uint32, uint32>_Random_16_Classic	22.6		
> BM_RangesSort_pair<uint32, uint32>_Random_16_Ranges	22.3	98.67%	-1.33%
> BM_RangesSort_pair<uint32, uint32>_Random_64_Classic	33.2		
> BM_RangesSort_pair<uint32, uint32>_Random_64_Ranges	33.4	100.60%	0.60%
> BM_RangesSort_pair<uint32, uint32>_Random_256_Classic	42.3		
> BM_RangesSort_pair<uint32, uint32>_Random_256_Ranges	42.1	99.53%	-0.47%
> BM_RangesSort_pair<uint32, uint32>_Random_1024_Classic	50.6		
> BM_RangesSort_pair<uint32, uint32>_Random_1024_Ranges	49.9	98.62%	-1.38%
> BM_RangesSort_pair<uint32, uint32>_Random_16384_Classic	67.1		
> BM_RangesSort_pair<uint32, uint32>_Random_16384_Ranges	67.4	100.45%	0.45%
> BM_RangesSort_pair<uint32, uint32>_Random_262144_Classic	84.3		
> BM_RangesSort_pair<uint32, uint32>_Random_262144_Ranges	80.8	95.85%	-4.15%
> BM_RangesSort_pair<uint32, uint32>_Ascending_1_Classic	4.02		
> BM_RangesSort_pair<uint32, uint32>_Ascending_1_Ranges	3.97	98.76%	-1.24%
> BM_RangesSort_pair<uint32, uint32>_Ascending_4_Classic	2.26		
> BM_RangesSort_pair<uint32, uint32>_Ascending_4_Ranges	2.14	94.69%	-5.31%
> BM_RangesSort_pair<uint32, uint32>_Ascending_16_Classic	2.75		
> BM_RangesSort_pair<uint32, uint32>_Ascending_16_Ranges	2.67	97.09%	-2.91%
> BM_RangesSort_pair<uint32, uint32>_Ascending_64_Classic	2.06		
> BM_RangesSort_pair<uint32, uint32>_Ascending_64_Ranges	2.07	100.49%	0.49%
> BM_RangesSort_pair<uint32, uint32>_Ascending_256_Classic	2.17		
> BM_RangesSort_pair<uint32, uint32>_Ascending_256_Ranges	2.17	100.00%	0.00%
> BM_RangesSort_pair<uint32, uint32>_Ascending_1024_Classic	2.03		
> BM_RangesSort_pair<uint32, uint32>_Ascending_1024_Ranges	2.06	101.48%	1.48%
> BM_RangesSort_pair<uint32, uint32>_Ascending_16384_Classic	1.98		
> BM_RangesSort_pair<uint32, uint32>_Ascending_16384_Ranges	1.98	100.00%	0.00%
> BM_RangesSort_pair<uint32, uint32>_Ascending_262144_Classic	1.97		
> BM_RangesSort_pair<uint32, uint32>_Ascending_262144_Ranges	1.96	99.49%	-0.51%
> BM_RangesSort_pair<uint32, uint32>_Descending_1_Classic	4.2		
> BM_RangesSort_pair<uint32, uint32>_Descending_1_Ranges	3.96	94.29%	-5.71%
> BM_RangesSort_pair<uint32, uint32>_Descending_4_Classic	3.32		
> BM_RangesSort_pair<uint32, uint32>_Descending_4_Ranges	3.3	99.40%	-0.60%
> BM_RangesSort_pair<uint32, uint32>_Descending_16_Classic	5.92		
> BM_RangesSort_pair<uint32, uint32>_Descending_16_Ranges	5.87	99.16%	-0.84%
> BM_RangesSort_pair<uint32, uint32>_Descending_64_Classic	4.27		
> BM_RangesSort_pair<uint32, uint32>_Descending_64_Ranges	4.27	100.00%	0.00%
> BM_RangesSort_pair<uint32, uint32>_Descending_256_Classic	4		
> BM_RangesSort_pair<uint32, uint32>_Descending_256_Ranges	3.98	99.50%	-0.50%
> BM_RangesSort_pair<uint32, uint32>_Descending_1024_Classic	5.18		
> BM_RangesSort_pair<uint32, uint32>_Descending_1024_Ranges	5.2	100.39%	0.39%
> BM_RangesSort_pair<uint32, uint32>_Descending_16384_Classic	5.05		
> BM_RangesSort_pair<uint32, uint32>_Descending_16384_Ranges	5.01	99.21%	-0.79%
> BM_RangesSort_pair<uint32, uint32>_Descending_262144_Classic	5.06		
> BM_RangesSort_pair<uint32, uint32>_Descending_262144_Ranges	5.05	99.80%	-0.20%
> BM_RangesSort_pair<uint32, uint32>_SingleElement_1_Classic	4.03		
> BM_RangesSort_pair<uint32, uint32>_SingleElement_1_Ranges	3.95	98.01%	-1.99%
> BM_RangesSort_pair<uint32, uint32>_SingleElement_4_Classic	2.22		
> BM_RangesSort_pair<uint32, uint32>_SingleElement_4_Ranges	2.05	92.34%	-7.66%
> BM_RangesSort_pair<uint32, uint32>_SingleElement_16_Classic	2.66		
> BM_RangesSort_pair<uint32, uint32>_SingleElement_16_Ranges	2.62	98.50%	-1.50%
> BM_RangesSort_pair<uint32, uint32>_SingleElement_64_Classic	2.85		
> BM_RangesSort_pair<uint32, uint32>_SingleElement_64_Ranges	2.95	103.51%	3.51%
> BM_RangesSort_pair<uint32, uint32>_SingleElement_256_Classic	3.07		
> BM_RangesSort_pair<uint32, uint32>_SingleElement_256_Ranges	3.05	99.35%	-0.65%
> BM_RangesSort_pair<uint32, uint32>_SingleElement_1024_Classic	2.96		
> BM_RangesSort_pair<uint32, uint32>_SingleElement_1024_Ranges	2.94	99.32%	-0.68%
> BM_RangesSort_pair<uint32, uint32>_SingleElement_16384_Classic	2.97		
> BM_RangesSort_pair<uint32, uint32>_SingleElement_16384_Ranges	2.94	98.99%	-1.01%
> BM_RangesSort_pair<uint32, uint32>_SingleElement_262144_Classic	2.93		
> BM_RangesSort_pair<uint32, uint32>_SingleElement_262144_Ranges	2.96	101.02%	1.02%
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_1_Classic	4.19		
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_1_Ranges	4.36	104.06%	4.06%
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_4_Classic	2.52		
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_4_Ranges	2.45	97.22%	-2.78%
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_16_Classic	5.66		
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_16_Ranges	5.74	101.41%	1.41%
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_64_Classic	6.19		
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_64_Ranges	6.18	99.84%	-0.16%
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_256_Classic	8.29		
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_256_Ranges	8.11	97.83%	-2.17%
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_1024_Classic	10.4		
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_1024_Ranges	10.6	101.92%	1.92%
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_16384_Classic	11.4		
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_16384_Ranges	11.3	99.12%	-0.88%
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_262144_Classic	13.7		
> BM_RangesSort_pair<uint32, uint32>_PipeOrgan_262144_Ranges	13.8	100.73%	0.73%
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_1_Classic	4.03		
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_1_Ranges	4	99.26%	-0.74%
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_4_Classic	2.93		
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_4_Ranges	2.72	92.83%	-7.17%
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_16_Classic	5.64		
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_16_Ranges	5.6	99.29%	-0.71%
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_64_Classic	8.99		
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_64_Ranges	8.99	100.00%	0.00%
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_256_Classic	12.5		
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_256_Ranges	12.6	100.80%	0.80%
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_1024_Classic	15.9		
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_1024_Ranges	14.9	93.71%	-6.29%
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_16384_Classic	34.3		
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_16384_Ranges	35.1	102.33%	2.33%
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_262144_Classic	40.2		
> BM_RangesSort_pair<uint32, uint32>_QuickSortAdversary_262144_Ranges	40.1	99.75%	-0.25%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_1_Classic	4.88		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_1_Ranges	4.53	92.83%	-7.17%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_4_Classic	7.01		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_4_Ranges	7.1	101.28%	1.28%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_16_Classic	26.1		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_16_Ranges	26	99.62%	-0.38%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_64_Classic	37.8		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_64_Ranges	38.4	101.59%	1.59%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_256_Classic	48.1		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_256_Ranges	48.3	100.42%	0.42%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_1024_Classic	53.4		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_1024_Ranges	51.9	97.19%	-2.81%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_16384_Classic	65.5		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_16384_Ranges	64.5	98.47%	-1.53%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_262144_Classic	79.2		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Random_262144_Ranges	81.4	102.78%	2.78%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_1_Classic	5.01		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_1_Ranges	5.13	102.40%	2.40%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_4_Classic	2.77		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_4_Ranges	2.96	106.86%	6.86%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_16_Classic	3.29		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_16_Ranges	3.21	97.57%	-2.43%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_64_Classic	3.65		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_64_Ranges	3.54	96.99%	-3.01%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_256_Classic	3.85		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_256_Ranges	3.68	95.58%	-4.42%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_1024_Classic	3.52		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_1024_Ranges	3.62	102.84%	2.84%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_16384_Classic	3.31		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_16384_Ranges	3.3	99.70%	-0.30%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_262144_Classic	3.42		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Ascending_262144_Ranges	3.5	102.34%	2.34%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_1_Classic	5.09		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_1_Ranges	4.89	96.07%	-3.93%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_4_Classic	3.61		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_4_Ranges	3.62	100.28%	0.28%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_16_Classic	5.79		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_16_Ranges	5.75	99.31%	-0.69%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_64_Classic	4.99		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_64_Ranges	5.13	102.81%	2.81%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_256_Classic	4.94		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_256_Ranges	4.84	97.98%	-2.02%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_1024_Classic	5.93		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_1024_Ranges	6.2	104.55%	4.55%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_16384_Classic	5.47		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_16384_Ranges	5.41	98.90%	-1.10%
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_262144_Classic	6.53		
> BM_RangesSort_tuple<uint32, uint64, uint32>_Descending_262144_Ranges	6.4	98.01%	-1.99%
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_1_Classic	4.85		
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_1_Ranges	4.41	90.93%	-9.07%
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_4_Classic	2.78		
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_4_Ranges	2.72	97.84%	-2.16%
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_16_Classic	3.84		
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_16_Ranges	3.64	94.79%	-5.21%
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_64_Classic	4.21		
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_64_Ranges	4.49	106.65%	6.65%
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_256_Classic	4.57		
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_256_Ranges	4.93	107.88%	7.88%
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_1024_Classic	4.37		
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_1024_Ranges	4.43	101.37%	1.37%
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_16384_Classic	4.04		
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_16384_Ranges	4	99.01%	-0.99%
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_262144_Classic	3.97		
> BM_RangesSort_tuple<uint32, uint64, uint32>_SingleElement_262144_Ranges	4.01	101.01%	1.01%
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_1_Classic	5		
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_1_Ranges	4.58	91.60%	-8.40%
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_4_Classic	2.8		
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_4_Ranges	2.85	101.79%	1.79%
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_16_Classic	6.09		
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_16_Ranges	6.22	102.13%	2.13%
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_64_Classic	6.95		
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_64_Ranges	6.92	99.57%	-0.43%
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_256_Classic	8.61		
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_256_Ranges	8.63	100.23%	0.23%
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_1024_Classic	10.4		
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_1024_Ranges	10.3	99.04%	-0.96%
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_16384_Classic	12.1		
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_16384_Ranges	12	99.17%	-0.83%
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_262144_Classic	15.2		
> BM_RangesSort_tuple<uint32, uint64, uint32>_PipeOrgan_262144_Ranges	15.3	100.66%	0.66%
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_1_Classic	4.8		
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_1_Ranges	5.01	104.38%	4.38%
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_4_Classic	2.95		
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_4_Ranges	3.25	110.17%	10.17%
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_16_Classic	5.58		
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_16_Ranges	5.5	98.57%	-1.43%
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_64_Classic	10		
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_64_Ranges	10.2	102.00%	2.00%
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_256_Classic	13.7		
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_256_Ranges	13.8	100.73%	0.73%
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_1024_Classic	21.7		
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_1024_Ranges	20.9	96.31%	-3.69%
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_16384_Classic	43		
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_16384_Ranges	43.2	100.47%	0.47%
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_262144_Classic	49.3		
> BM_RangesSort_tuple<uint32, uint64, uint32>_QuickSortAdversary_262144_Ranges	49.4	100.20%	0.20%
> BM_RangesSort_string_Random_1_Classic	4.74		
> BM_RangesSort_string_Random_1_Ranges	4.75	100.21%	0.21%
> BM_RangesSort_string_Random_4_Classic	17.1		
> BM_RangesSort_string_Random_4_Ranges	17.1	100.00%	0.00%
> BM_RangesSort_string_Random_16_Classic	46.8		
> BM_RangesSort_string_Random_16_Ranges	46.6	99.57%	-0.43%
> BM_RangesSort_string_Random_64_Classic	72.7		
> BM_RangesSort_string_Random_64_Ranges	72.4	99.59%	-0.41%
> BM_RangesSort_string_Random_256_Classic	92.7		
> BM_RangesSort_string_Random_256_Ranges	93.2	100.54%	0.54%
> BM_RangesSort_string_Random_1024_Classic	113		
> BM_RangesSort_string_Random_1024_Ranges	112	99.12%	-0.88%
> BM_RangesSort_string_Random_16384_Classic	179		
> BM_RangesSort_string_Random_16384_Ranges	180	100.56%	0.56%
> BM_RangesSort_string_Random_262144_Classic	293		
> BM_RangesSort_string_Random_262144_Ranges	286	97.61%	-2.39%
> BM_RangesSort_string_Ascending_1_Classic	4.81		
> BM_RangesSort_string_Ascending_1_Ranges	4.8	99.79%	-0.21%
> BM_RangesSort_string_Ascending_4_Classic	10		
> BM_RangesSort_string_Ascending_4_Ranges	9.99	99.90%	-0.10%
> BM_RangesSort_string_Ascending_16_Classic	17.2		
> BM_RangesSort_string_Ascending_16_Ranges	17.3	100.58%	0.58%
> BM_RangesSort_string_Ascending_64_Classic	22.6		
> BM_RangesSort_string_Ascending_64_Ranges	23	101.77%	1.77%
> BM_RangesSort_string_Ascending_256_Classic	21.9		
> BM_RangesSort_string_Ascending_256_Ranges	21.7	99.09%	-0.91%
> BM_RangesSort_string_Ascending_1024_Classic	21.9		
> BM_RangesSort_string_Ascending_1024_Ranges	21.8	99.54%	-0.46%
> BM_RangesSort_string_Ascending_16384_Classic	36		
> BM_RangesSort_string_Ascending_16384_Ranges	36.1	100.28%	0.28%
> BM_RangesSort_string_Ascending_262144_Classic	46.1		
> BM_RangesSort_string_Ascending_262144_Ranges	46.2	100.22%	0.22%
> BM_RangesSort_string_Descending_1_Classic	4.72		
> BM_RangesSort_string_Descending_1_Ranges	4.77	101.06%	1.06%
> BM_RangesSort_string_Descending_4_Classic	12.1		
> BM_RangesSort_string_Descending_4_Ranges	12.1	100.00%	0.00%
> BM_RangesSort_string_Descending_16_Classic	26.1		
> BM_RangesSort_string_Descending_16_Ranges	26.2	100.38%	0.38%
> BM_RangesSort_string_Descending_64_Classic	30.3		
> BM_RangesSort_string_Descending_64_Ranges	29.2	96.37%	-3.63%
> BM_RangesSort_string_Descending_256_Classic	30.1		
> BM_RangesSort_string_Descending_256_Ranges	29.9	99.34%	-0.66%
> BM_RangesSort_string_Descending_1024_Classic	33.8		
> BM_RangesSort_string_Descending_1024_Ranges	33.5	99.11%	-0.89%
> BM_RangesSort_string_Descending_16384_Classic	48.9		
> BM_RangesSort_string_Descending_16384_Ranges	48.3	98.77%	-1.23%
> BM_RangesSort_string_Descending_262144_Classic	83.6		
> BM_RangesSort_string_Descending_262144_Ranges	88.7	106.10%	6.10%
> BM_RangesSort_string_SingleElement_1_Classic	4.87		
> BM_RangesSort_string_SingleElement_1_Ranges	4.7	96.51%	-3.49%
> BM_RangesSort_string_SingleElement_4_Classic	9.02		
> BM_RangesSort_string_SingleElement_4_Ranges	9.22	102.22%	2.22%
> BM_RangesSort_string_SingleElement_16_Classic	18.1		
> BM_RangesSort_string_SingleElement_16_Ranges	18.2	100.55%	0.55%
> BM_RangesSort_string_SingleElement_64_Classic	26.7		
> BM_RangesSort_string_SingleElement_64_Ranges	26.9	100.75%	0.75%
> BM_RangesSort_string_SingleElement_256_Classic	22.1		
> BM_RangesSort_string_SingleElement_256_Ranges	22.5	101.81%	1.81%
> BM_RangesSort_string_SingleElement_1024_Classic	19.7		
> BM_RangesSort_string_SingleElement_1024_Ranges	20	101.52%	1.52%
> BM_RangesSort_string_SingleElement_16384_Classic	17.4		
> BM_RangesSort_string_SingleElement_16384_Ranges	17.5	100.57%	0.57%
> BM_RangesSort_string_SingleElement_262144_Classic	18.7		
> BM_RangesSort_string_SingleElement_262144_Ranges	18.9	101.07%	1.07%
> BM_RangesSort_string_PipeOrgan_1_Classic	4.72		
> BM_RangesSort_string_PipeOrgan_1_Ranges	4.54	96.19%	-3.81%
> BM_RangesSort_string_PipeOrgan_4_Classic	10.6		
> BM_RangesSort_string_PipeOrgan_4_Ranges	10.6	100.00%	0.00%
> BM_RangesSort_string_PipeOrgan_16_Classic	25.5		
> BM_RangesSort_string_PipeOrgan_16_Ranges	25.3	99.22%	-0.78%
> BM_RangesSort_string_PipeOrgan_64_Classic	37.9		
> BM_RangesSort_string_PipeOrgan_64_Ranges	38.2	100.79%	0.79%
> BM_RangesSort_string_PipeOrgan_256_Classic	46.5		
> BM_RangesSort_string_PipeOrgan_256_Ranges	45.3	97.42%	-2.58%
> BM_RangesSort_string_PipeOrgan_1024_Classic	52.9		
> BM_RangesSort_string_PipeOrgan_1024_Ranges	53.7	101.51%	1.51%
> BM_RangesSort_string_PipeOrgan_16384_Classic	73.4		
> BM_RangesSort_string_PipeOrgan_16384_Ranges	72.2	98.37%	-1.63%
> BM_RangesSort_string_PipeOrgan_262144_Classic	122		
> BM_RangesSort_string_PipeOrgan_262144_Ranges	122	100.00%	0.00%
> BM_RangesSort_string_QuickSortAdversary_1_Classic	4.59		
> BM_RangesSort_string_QuickSortAdversary_1_Ranges	4.57	99.56%	-0.44%
> BM_RangesSort_string_QuickSortAdversary_4_Classic	16.5		
> BM_RangesSort_string_QuickSortAdversary_4_Ranges	16.8	101.82%	1.82%
> BM_RangesSort_string_QuickSortAdversary_16_Classic	45.4		
> BM_RangesSort_string_QuickSortAdversary_16_Ranges	47.8	105.29%	5.29%
> BM_RangesSort_string_QuickSortAdversary_64_Classic	70.6		
> BM_RangesSort_string_QuickSortAdversary_64_Ranges	70.1	99.29%	-0.71%
> BM_RangesSort_string_QuickSortAdversary_256_Classic	89		
> BM_RangesSort_string_QuickSortAdversary_256_Ranges	89.6	100.67%	0.67%
> BM_RangesSort_string_QuickSortAdversary_1024_Classic	109		
> BM_RangesSort_string_QuickSortAdversary_1024_Ranges	107	98.17%	-1.83%
> BM_RangesSort_string_QuickSortAdversary_16384_Classic	173		
> BM_RangesSort_string_QuickSortAdversary_16384_Ranges	173	100.00%	0.00%
> BM_RangesSort_string_QuickSortAdversary_262144_Classic	272		
> BM_RangesSort_string_QuickSortAdversary_262144_Ranges	276	101.47%	1.47%
> BM_RangesSort_float_Random_1_Classic	3.82		
> BM_RangesSort_float_Random_1_Ranges	3.27	85.60%	-14.40%
> BM_RangesSort_float_Random_4_Classic	5.05		
> BM_RangesSort_float_Random_4_Ranges	4.77	94.46%	-5.54%
> BM_RangesSort_float_Random_16_Classic	9.14		
> BM_RangesSort_float_Random_16_Ranges	9.07	99.23%	-0.77%
> BM_RangesSort_float_Random_64_Classic	16.4		
> BM_RangesSort_float_Random_64_Ranges	16.3	99.39%	-0.61%
> BM_RangesSort_float_Random_256_Classic	23.4		
> BM_RangesSort_float_Random_256_Ranges	23.2	99.15%	-0.85%
> BM_RangesSort_float_Random_1024_Classic	30.1		
> BM_RangesSort_float_Random_1024_Ranges	30.1	100.00%	0.00%
> BM_RangesSort_float_Random_16384_Classic	43.6		
> BM_RangesSort_float_Random_16384_Ranges	43.7	100.23%	0.23%
> BM_RangesSort_float_Random_262144_Classic	57.2		
> BM_RangesSort_float_Random_262144_Ranges	56.8	99.30%	-0.70%
> BM_RangesSort_float_Ascending_1_Classic	3.71		
> BM_RangesSort_float_Ascending_1_Ranges	3.24	87.33%	-12.67%
> BM_RangesSort_float_Ascending_4_Classic	1.21		
> BM_RangesSort_float_Ascending_4_Ranges	1.14	94.21%	-5.79%
> BM_RangesSort_float_Ascending_16_Classic	1.05		
> BM_RangesSort_float_Ascending_16_Ranges	1	95.24%	-4.76%
> BM_RangesSort_float_Ascending_64_Classic	1.12		
> BM_RangesSort_float_Ascending_64_Ranges	1.11	99.11%	-0.89%
> BM_RangesSort_float_Ascending_256_Classic	1.16		
> BM_RangesSort_float_Ascending_256_Ranges	1.16	100.00%	0.00%
> BM_RangesSort_float_Ascending_1024_Classic	1.07		
> BM_RangesSort_float_Ascending_1024_Ranges	1.08	100.93%	0.93%
> BM_RangesSort_float_Ascending_16384_Classic	1.01		
> BM_RangesSort_float_Ascending_16384_Ranges	1.15	113.86%	13.86%
> BM_RangesSort_float_Ascending_262144_Classic	1.08		
> BM_RangesSort_float_Ascending_262144_Ranges	1.15	106.48%	6.48%
> BM_RangesSort_float_Descending_1_Classic	4.47		
> BM_RangesSort_float_Descending_1_Ranges	3.32	74.27%	-25.73%
> BM_RangesSort_float_Descending_4_Classic	1.48		
> BM_RangesSort_float_Descending_4_Ranges	1.39	93.92%	-6.08%
> BM_RangesSort_float_Descending_16_Classic	5.17		
> BM_RangesSort_float_Descending_16_Ranges	5.11	98.84%	-1.16%
> BM_RangesSort_float_Descending_64_Classic	1.96		
> BM_RangesSort_float_Descending_64_Ranges	1.96	100.00%	0.00%
> BM_RangesSort_float_Descending_256_Classic	1.98		
> BM_RangesSort_float_Descending_256_Ranges	1.9	95.96%	-4.04%
> BM_RangesSort_float_Descending_1024_Classic	2.14		
> BM_RangesSort_float_Descending_1024_Ranges	2.13	99.53%	-0.47%
> BM_RangesSort_float_Descending_16384_Classic	1.94		
> BM_RangesSort_float_Descending_16384_Ranges	1.89	97.42%	-2.58%
> BM_RangesSort_float_Descending_262144_Classic	1.88		
> BM_RangesSort_float_Descending_262144_Ranges	1.88	100.00%	0.00%
> BM_RangesSort_float_SingleElement_1_Classic	3.57		
> BM_RangesSort_float_SingleElement_1_Ranges	3.15	88.24%	-11.76%
> BM_RangesSort_float_SingleElement_4_Classic	1.22		
> BM_RangesSort_float_SingleElement_4_Ranges	1.06	86.89%	-13.11%
> BM_RangesSort_float_SingleElement_16_Classic	1.01		
> BM_RangesSort_float_SingleElement_16_Ranges	0.986	97.62%	-2.38%
> BM_RangesSort_float_SingleElement_64_Classic	0.831		
> BM_RangesSort_float_SingleElement_64_Ranges	0.885	106.50%	6.50%
> BM_RangesSort_float_SingleElement_256_Classic	1.05		
> BM_RangesSort_float_SingleElement_256_Ranges	1.03	98.10%	-1.90%
> BM_RangesSort_float_SingleElement_1024_Classic	1.02		
> BM_RangesSort_float_SingleElement_1024_Ranges	0.963	94.41%	-5.59%
> BM_RangesSort_float_SingleElement_16384_Classic	0.867		
> BM_RangesSort_float_SingleElement_16384_Ranges	0.79	91.12%	-8.88%
> BM_RangesSort_float_SingleElement_262144_Classic	0.796		
> BM_RangesSort_float_SingleElement_262144_Ranges	0.824	103.52%	3.52%
> BM_RangesSort_float_PipeOrgan_1_Classic	3.86		
> BM_RangesSort_float_PipeOrgan_1_Ranges	3.54	91.71%	-8.29%
> BM_RangesSort_float_PipeOrgan_4_Classic	1.32		
> BM_RangesSort_float_PipeOrgan_4_Ranges	1.18	89.39%	-10.61%
> BM_RangesSort_float_PipeOrgan_16_Classic	2.08		
> BM_RangesSort_float_PipeOrgan_16_Ranges	2.1	100.96%	0.96%
> BM_RangesSort_float_PipeOrgan_64_Classic	5.17		
> BM_RangesSort_float_PipeOrgan_64_Ranges	5	96.71%	-3.29%
> BM_RangesSort_float_PipeOrgan_256_Classic	2.55		
> BM_RangesSort_float_PipeOrgan_256_Ranges	2.56	100.39%	0.39%
> BM_RangesSort_float_PipeOrgan_1024_Classic	3.26		
> BM_RangesSort_float_PipeOrgan_1024_Ranges	3.27	100.31%	0.31%
> BM_RangesSort_float_PipeOrgan_16384_Classic	3.67		
> BM_RangesSort_float_PipeOrgan_16384_Ranges	3.71	101.09%	1.09%
> BM_RangesSort_float_PipeOrgan_262144_Classic	4.28		
> BM_RangesSort_float_PipeOrgan_262144_Ranges	4.37	102.10%	2.10%
> BM_RangesSort_float_QuickSortAdversary_1_Classic	3.63		
> BM_RangesSort_float_QuickSortAdversary_1_Ranges	3.19	87.88%	-12.12%
> BM_RangesSort_float_QuickSortAdversary_4_Classic	1.22		
> BM_RangesSort_float_QuickSortAdversary_4_Ranges	1.06	86.89%	-13.11%
> BM_RangesSort_float_QuickSortAdversary_16_Classic	1.02		
> BM_RangesSort_float_QuickSortAdversary_16_Ranges	0.989	96.96%	-3.04%
> BM_RangesSort_float_QuickSortAdversary_64_Classic	8.96		
> BM_RangesSort_float_QuickSortAdversary_64_Ranges	8.87	99.00%	-1.00%
> BM_RangesSort_float_QuickSortAdversary_256_Classic	11.8		
> BM_RangesSort_float_QuickSortAdversary_256_Ranges	11.8	100.00%	0.00%
> BM_RangesSort_float_QuickSortAdversary_1024_Classic	26.5		
> BM_RangesSort_float_QuickSortAdversary_1024_Ranges	26.6	100.38%	0.38%
> BM_RangesSort_float_QuickSortAdversary_16384_Classic	48.6		
> BM_RangesSort_float_QuickSortAdversary_16384_Ranges	49.3	101.44%	1.44%
> BM_RangesSort_float_QuickSortAdversary_262144_Classic	53.2		
> BM_RangesSort_float_QuickSortAdversary_262144_Ranges	53.6	100.75%	0.75%
> ```
Note: I tried changing the order so that the ranges version goes before the classic version, thinking that perhaps caching gives the latter of the two an advantage. However, the results are comparable, the ranges version still seems to have a slight edge on average.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127557/new/

https://reviews.llvm.org/D127557



More information about the libcxx-commits mailing list