Indeed you are correct. Starting with a crazy high letter benefits the LettersAndNumbers approach. Thi scenario would not ever happen. The highest letter would be something like "ZZZZ". Fun experiment nonetheless.
inputs = %{
# "10" => 10,
# "100" => 100,
"1K" => 1_000,
"100K" => 100_000,
"1M" => 1_000_000,
}
Benchee.run %{
"LettersAndNumbers.list/2" => fn(count) -> LettersAndNumbers.list(1039988, count) end,
"generate_list/2" => fn(count) -> MutateLayout.generate_list("O" |> String.duplicate(40_000), count) end
},
formatters: [
# Benchee.Formatters.HTML,
Benchee.Formatters.Console
],
time: 7,
warmup: 3,
inputs: inputs
RESULTS:
Operating System: macOS"
CPU Information: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
Number of Available Cores: 8
Available memory: 16 GB
Elixir 1.6.1
Erlang 20.2.4
Benchmark suite executing with the following configuration:
warmup: 3 s
time: 7 s
memory time: 0 μs
parallel: 1
inputs: 100K, 1K, 1M
Estimated total run time: 1 min
Benchmarking LettersAndNumbers.list/2 with input 100K...
Benchmarking LettersAndNumbers.list/2 with input 1K...
Benchmarking LettersAndNumbers.list/2 with input 1M...
Benchmarking generate_list/2 with input 100K...
Benchmarking generate_list/2 with input 1K...
Benchmarking generate_list/2 with input 1M...
##### With input 100K #####
Name ips average deviation median 99th %
LettersAndNumbers.list/2 0.0712 0.23 min ±0.00% 0.23 min 0.23 min
generate_list/2 0.0132 1.27 min ±0.00% 1.27 min 1.27 min
Comparison:
LettersAndNumbers.list/2 0.0712
generate_list/2 0.0132 - 5.40x slower
##### With input 1K #####
Name ips average deviation median 99th %
LettersAndNumbers.list/2 8.40 0.00199 min ±2.23% 0.00198 min 0.00209 min
generate_list/2 0.0162 1.03 min ±0.00% 1.03 min 1.03 min
Comparison:
LettersAndNumbers.list/2 8.40
generate_list/2 0.0162 - 518.33x slower
##### With input 1M #####
Name ips average deviation median 99th %
LettersAndNumbers.list/2 0.00465 3.59 min ±0.00% 3.59 min 3.59 min
generate_list/2 0.00365 4.57 min ±0.00% 4.57 min 4.57 min
Comparison:
LettersAndNumbers.list/2 0.00465
generate_list/2 0.00365 - 1.27x slower


















