I did a benchmark of the solutions presented here and @100phlecs’s solution is still the fastest, but your second solution uses the least memory. See: benchmark.exs · GitHub
Results:
Name ips average deviation median 99th %
100phlecs 2.53 M 395.84 ns ±7509.36% 291 ns 1416 ns
nikiiv2 1.98 M 504.83 ns ±4331.43% 458 ns 583 ns
nikiiv 1.38 M 724.03 ns ±2450.27% 666 ns 875 ns
tomekowal 1.28 M 783.66 ns ±2716.34% 708 ns 958 ns
eksperimental 0.21 M 4653.02 ns ±216.90% 4291 ns 11750 ns
stefanluptak 0.0484 M 20668.09 ns ±21.22% 20167 ns 29125 ns
Comparison:
100phlecs 2.53 M
nikiiv2 1.98 M - 1.28x slower +108.99 ns
nikiiv 1.38 M - 1.83x slower +328.18 ns
tomekowal 1.28 M - 1.98x slower +387.81 ns
eksperimental 0.21 M - 11.75x slower +4257.17 ns
stefanluptak 0.0484 M - 52.21x slower +20272.24 ns
Memory usage statistics:
Name Memory usage
100phlecs 2.34 KB
nikiiv2 0.79 KB - 0.34x memory usage -1.55469 KB
nikiiv 7.03 KB - 3.00x memory usage +4.69 KB
tomekowal 7 KB - 2.99x memory usage +4.66 KB
eksperimental 30.13 KB - 12.86x memory usage +27.79 KB
stefanluptak 16.90 KB - 7.21x memory usage +14.55 KB


















