@@ -162,59 +162,63 @@ For planning purposes, consider the 99th percentile times shown in the table abo
162162### Real world example using the ` benchmark ` command
163163``` bash
164164$ cargo run --release -F alkali -- benchmark -i 1 -t 16
165+ Using 16 threads for benchmark
166+ Starting benchmark with 1 iterations across 16 threads...
167+
165168Benchmark results:
166169Threads: 16
167- Total time: 30.79s
170+ Total time: 30.51s
168171Total iterations: 16
169- Global average time per derivation: 1924.35ms
172+ Global average time per derivation: 1907.07ms
170173Global derivations per second: 0.52
171- Thread average time per derivation: 30.79s
174+ Thread average time per derivation: 30.51s
172175Thread derivations per second: 0.03
173176
174177Estimated time to brute-force one preimage/key pair:
175- bits │ systematic (worst) │ random (expected) │ random (99th %ile) │ random (99.9th %ile)
176- -----┼--------------------┼--------------------┼--------------------┼-------------------
177- 1 │ 31s │ 31s │ 2min 22s │ 3min 33s
178- 2 │ 31s │ 31s │ 2min 22s │ 3min 33s
179- 3 │ 31s │ 31s │ 2min 22s │ 3min 33s
180- 4 │ 31s │ 31s │ 2min 22s │ 3min 33s
181- 5 │ 31s │ 31s │ 2min 22s │ 3min 33s
182- 6 │ 1min 2s │ 31s │ 2min 22s │ 3min 33s
183- 7 │ 2min 3s │ 1min 2s │ 4min 44s │ 7min 5s
184- 8 │ 4min 6s │ 2min 3s │ 9min 27s │ 14min 11s
185- 9 │ 8min 13s │ 4min 6s │ 18min 54s │ 28min 21s
186- 10 │ 16min 25s │ 8min 13s │ 37min 49s │ 56min 43s
187- 11 │ 32min 51s │ 16min 25s │ 1h 16min │ 1h 53min
188- 12 │ 1h 6min │ 32min 51s │ 2h 31min │ 3h 47min
189- 13 │ 2h 11min │ 1h 6min │ 5h 2min │ 7h 34min
190- 14 │ 4h 23min │ 2h 11min │ 10h 5min │ 15h 7min
191- 15 │ 8h 45min │ 4h 23min │ 20h 10min │ 1d 6h
192- 16 │ 17h 31min │ 8h 45min │ 1d 16h │ 2d 12h
193- 17 │ 1d 11h │ 17h 31min │ 3d 9h │ 5d 1h
194- 18 │ 2d 22h │ 1d 11h │ 6d 17h │ 10d 2h
195- 19 │ 5d 20h │ 2d 22h │ 13d 11h │ 20d 4h
196- 20 │ 11d 16h │ 5d 20h │ 26d 21h │ 40d 8h
197- 21 │ 23d 9h │ 11d 16h │ 53d 19h │ 80d 16h
198- 22 │ 46d 17h │ 23d 9h │ 107d 13h │ 161d 8h
199- 23 │ 93d 10h │ 46d 17h │ 215d 2h │ 322d 16h
200- 24 │ 186d 20h │ 93d 10h │ 1y 65d │ 1y 280d
201- 25 │ 1y 8d │ 186d 20h │ 2y 130d │ 3y 195d
202- 26 │ 2y 17d │ 1y 8d │ 4y 260d │ 7y 24d
203- 27 │ 4y 34d │ 2y 17d │ 9y 154d │ 14y 49d
204- 28 │ 8y 67d │ 4y 34d │ 18y 309d │ 28y 98d
205- 29 │ 16y 135d │ 8y 67d │ 37y 252d │ 56y 196d
206- 30 │ 32y 270d │ 16y 135d │ 75y 139d │ 113y 27d
207- 31 │ 65y 174d │ 32y 270d │ 150y 279d │ 226y 53d
208- 32 │ 130y 348d │ 65y 174d │ 301y 193d │ 452y 106d
209-
210- Search strategy explanation:
211- • Systematic search: Partitions search space among threads (worst-case time shown)
212- • Random search: Each thread picks candidates randomly (follows geometric distribution)
213-
214- Random search variance:
215- • 50th percentile (median): ~ 0.7× expected time
216- • 90th percentile: ~ 2.3× expected time
217- • 99th percentile: ~ 4.6× expected time
218- • 99.9th percentile: ~ 6.9× expected time
178+ Note: This benchmark uses 16 threads with systematic search
179+ For comparison with random search percentiles, see README table
180+
181+ bits │ systematic (worst) │ systematic (avg)
182+ -----┼--------------------┼-------------------
183+ 1 │ 31s │ 31s
184+ 2 │ 31s │ 31s
185+ 3 │ 31s │ 31s
186+ 4 │ 31s │ 31s
187+ 5 │ 31s │ 31s
188+ 6 │ 1min 1s │ 31s
189+ 7 │ 2min 2s │ 1min 1s
190+ 8 │ 4min 4s │ 2min 2s
191+ 9 │ 8min 8s │ 4min 4s
192+ 10 │ 16min 16s │ 8min 8s
193+ 11 │ 32min 33s │ 16min 16s
194+ 12 │ 1h 5min │ 32min 33s
195+ 13 │ 2h 10min │ 1h 5min
196+ 14 │ 4h 20min │ 2h 10min
197+ 15 │ 8h 41min │ 4h 20min
198+ 16 │ 17h 22min │ 8h 41min
199+ 17 │ 1d 11h │ 17h 22min
200+ 18 │ 2d 21h │ 1d 11h
201+ 19 │ 5d 19h │ 2d 21h
202+ 20 │ 11d 14h │ 5d 19h
203+ 21 │ 23d 3h │ 11d 14h
204+ 22 │ 46d 7h │ 23d 3h
205+ 23 │ 92d 14h │ 46d 7h
206+ 24 │ 185d 4h │ 92d 14h
207+ 25 │ 1y 5d │ 185d 4h
208+ 26 │ 2y 10d │ 1y 5d
209+ 27 │ 4y 20d │ 2y 10d
210+ 28 │ 8y 41d │ 4y 20d
211+ 29 │ 16y 81d │ 8y 41d
212+ 30 │ 32y 162d │ 16y 81d
213+ 31 │ 64y 324d │ 32y 162d
214+ 32 │ 129y 283d │ 64y 324d
215+
216+ Systematic search explanation:
217+ • Worst-case: One thread gets unlucky and searches entire partition
218+ • Average case: Threads find target halfway through their partitions
219+ • No variance: Deterministic partitioning means predictable bounds
220+
221+ For random search with percentiles, see the README table comparing
222+ systematic (16 threads) vs random search (2048 threads)
219223```
220224---
0 commit comments