Created
May 12, 2022 04:22
-
-
Save eksperimental/c9ed94e418b4caa7fe61aff65b18c836 to your computer and use it in GitHub Desktop.
Optimization for Enum.sort_by/3 when sorter is `:desc`.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Elixir 1.14.0-dev | |
Erlang 24.3 | |
Benchmark suite executing with the following configuration: | |
warmup: 2 s | |
time: 5 s | |
memory time: 5 s | |
reduction time: 0 ns | |
parallel: 1 | |
inputs: keyword_100_desc, keyword_1000_desc, keyword_10000_desc, keyword_100000_desc, map_100_desc, map_1000_desc, map_10000_desc, map_100000_desc | |
Estimated total run time: 3.20 min | |
Benchmarking Enum.sort_by/3 with input keyword_100_desc ... | |
Benchmarking Enum.sort_by/3 with input keyword_1000_desc ... | |
Benchmarking Enum.sort_by/3 with input keyword_10000_desc ... | |
Benchmarking Enum.sort_by/3 with input keyword_100000_desc ... | |
Benchmarking Enum.sort_by/3 with input map_100_desc ... | |
Benchmarking Enum.sort_by/3 with input map_1000_desc ... | |
Benchmarking Enum.sort_by/3 with input map_10000_desc ... | |
Benchmarking Enum.sort_by/3 with input map_100000_desc ... | |
Benchmarking Enum.Optimized.sort_by/3 with input keyword_100_desc ... | |
Benchmarking Enum.Optimized.sort_by/3 with input keyword_1000_desc ... | |
Benchmarking Enum.Optimized.sort_by/3 with input keyword_10000_desc ... | |
Benchmarking Enum.Optimized.sort_by/3 with input keyword_100000_desc ... | |
Benchmarking Enum.Optimized.sort_by/3 with input map_100_desc ... | |
Benchmarking Enum.Optimized.sort_by/3 with input map_1000_desc ... | |
Benchmarking Enum.Optimized.sort_by/3 with input map_10000_desc ... | |
Benchmarking Enum.Optimized.sort_by/3 with input map_100000_desc ... | |
##### With input keyword_100_desc ##### | |
Name ips average deviation median 99th % | |
Enum.Optimized.sort_by/3 56.27 K 17.77 μs ±72.82% 17.39 μs 18.50 μs | |
Enum.sort_by/3 35.73 K 27.98 μs ±98.65% 26.91 μs 49.46 μs | |
Comparison: | |
Enum.Optimized.sort_by/3 56.27 K | |
Enum.sort_by/3 35.73 K - 1.57x slower +10.21 μs | |
Memory usage statistics: | |
Name Memory usage | |
Enum.Optimized.sort_by/3 13.88 KB | |
Enum.sort_by/3 15.64 KB - 1.13x memory usage +1.76 KB | |
**All measurements for memory usage were the same** | |
##### With input keyword_1000_desc ##### | |
Name ips average deviation median 99th % | |
Enum.Optimized.sort_by/3 3.52 K 284.13 μs ±17.52% 277.54 μs 357.81 μs | |
Enum.sort_by/3 2.32 K 430.46 μs ±27.12% 417.77 μs 651.58 μs | |
Comparison: | |
Enum.Optimized.sort_by/3 3.52 K | |
Enum.sort_by/3 2.32 K - 1.51x slower +146.32 μs | |
Memory usage statistics: | |
Name Memory usage | |
Enum.Optimized.sort_by/3 160.49 KB | |
Enum.sort_by/3 201.92 KB - 1.26x memory usage +41.43 KB | |
**All measurements for memory usage were the same** | |
##### With input keyword_10000_desc ##### | |
Name ips average deviation median 99th % | |
Enum.Optimized.sort_by/3 246.17 4.06 ms ±7.35% 4.08 ms 4.77 ms | |
Enum.sort_by/3 167.08 5.99 ms ±7.49% 5.95 ms 8.42 ms | |
Comparison: | |
Enum.Optimized.sort_by/3 246.17 | |
Enum.sort_by/3 167.08 - 1.47x slower +1.92 ms | |
Memory usage statistics: | |
Name Memory usage | |
Enum.Optimized.sort_by/3 1.80 MB | |
Enum.sort_by/3 2.65 MB - 1.47x memory usage +0.85 MB | |
**All measurements for memory usage were the same** | |
##### With input keyword_100000_desc ##### | |
Name ips average deviation median 99th % | |
Enum.Optimized.sort_by/3 9.80 102.04 ms ±11.82% 98.44 ms 148.10 ms | |
Enum.sort_by/3 5.08 196.91 ms ±16.43% 186.64 ms 272.10 ms | |
Comparison: | |
Enum.Optimized.sort_by/3 9.80 | |
Enum.sort_by/3 5.08 - 1.93x slower +94.87 ms | |
Memory usage statistics: | |
Name Memory usage | |
Enum.Optimized.sort_by/3 24.04 MB | |
Enum.sort_by/3 30.57 MB - 1.27x memory usage +6.52 MB | |
**All measurements for memory usage were the same** | |
##### With input map_100_desc ##### | |
Name ips average deviation median 99th % | |
Enum.Optimized.sort_by/3 50.09 K 19.96 μs ±72.13% 19.57 μs 21.82 μs | |
Enum.sort_by/3 30.79 K 32.47 μs ±120.69% 31.12 μs 59.61 μs | |
Comparison: | |
Enum.Optimized.sort_by/3 50.09 K | |
Enum.sort_by/3 30.79 K - 1.63x slower +12.51 μs | |
Memory usage statistics: | |
Name Memory usage | |
Enum.Optimized.sort_by/3 17.86 KB | |
Enum.sort_by/3 24.27 KB - 1.36x memory usage +6.41 KB | |
**All measurements for memory usage were the same** | |
##### With input map_1000_desc ##### | |
Name ips average deviation median 99th % | |
Enum.Optimized.sort_by/3 3.20 K 312.07 μs ±29.54% 303.63 μs 382.33 μs | |
Enum.sort_by/3 2.17 K 461.87 μs ±20.54% 444.73 μs 639.84 μs | |
Comparison: | |
Enum.Optimized.sort_by/3 3.20 K | |
Enum.sort_by/3 2.17 K - 1.48x slower +149.79 μs | |
Memory usage statistics: | |
Name Memory usage | |
Enum.Optimized.sort_by/3 217.61 KB | |
Enum.sort_by/3 270.53 KB - 1.24x memory usage +52.92 KB | |
**All measurements for memory usage were the same** | |
##### With input map_10000_desc ##### | |
Name ips average deviation median 99th % | |
Enum.Optimized.sort_by/3 236.87 4.22 ms ±5.43% 4.20 ms 4.61 ms | |
Enum.sort_by/3 151.04 6.62 ms ±7.00% 6.55 ms 9.31 ms | |
Comparison: | |
Enum.Optimized.sort_by/3 236.87 | |
Enum.sort_by/3 151.04 - 1.57x slower +2.40 ms | |
Memory usage statistics: | |
Name Memory usage | |
Enum.Optimized.sort_by/3 2.33 MB | |
Enum.sort_by/3 3.24 MB - 1.39x memory usage +0.92 MB | |
**All measurements for memory usage were the same** | |
##### With input map_100000_desc ##### | |
Name ips average deviation median 99th % | |
Enum.Optimized.sort_by/3 10.32 96.86 ms ±12.71% 93.71 ms 136.38 ms | |
Enum.sort_by/3 7.33 136.49 ms ±13.92% 128.94 ms 209.11 ms | |
Comparison: | |
Enum.Optimized.sort_by/3 10.32 | |
Enum.sort_by/3 7.33 - 1.41x slower +39.63 ms | |
Memory usage statistics: | |
Name Memory usage | |
Enum.Optimized.sort_by/3 27.91 MB | |
Enum.sort_by/3 38.03 MB - 1.36x memory usage +10.12 MB | |
**All measurements for memory usage were the same** |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment