1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
/Users/duncan/.local/share/mise/installs/ruby/3.3.4/bin/ruby test/benchmark_performance.rb
================================================================================
RQRCode Core - Detailed Performance Benchmark (benchmark-ips)
================================================================================
Ruby: 3.3.4 (arm64-darwin24)
ARCH_BITS: 64
================================================================================
--- By Data Size ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Small (v1) 29.000 i/100ms
Medium URL (v5) 8.000 i/100ms
Large (v24) 1.000 i/100ms
Calculating -------------------------------------
Small (v1) 292.903 (± 0.3%) i/s (3.41 ms/i) - 609.000 in 2.079211s
Medium URL (v5) 85.342 (± 1.2%) i/s (11.72 ms/i) - 176.000 in 2.062425s
Large (v24) 8.684 (± 0.0%) i/s (115.16 ms/i) - 18.000 in 2.072975s
Comparison:
Small (v1): 292.9 i/s
Medium URL (v5): 85.3 i/s - 3.43x slower
Large (v24): 8.7 i/s - 33.73x slower
--- By Encoding Mode ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Numeric 29.000 i/100ms
Alphanumeric 19.000 i/100ms
Byte 19.000 i/100ms
Calculating -------------------------------------
Numeric 291.792 (± 0.7%) i/s (3.43 ms/i) - 609.000 in 2.087222s
Alphanumeric 196.603 (± 0.5%) i/s (5.09 ms/i) - 399.000 in 2.029540s
Byte 197.528 (± 0.5%) i/s (5.06 ms/i) - 399.000 in 2.020013s
Comparison:
Numeric: 291.8 i/s
Byte: 197.5 i/s - 1.48x slower
Alphanumeric: 196.6 i/s - 1.48x slower
--- By QR Version (same data) ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Version 1 29.000 i/100ms
Version 5 8.000 i/100ms
Version 10 3.000 i/100ms
Version 20 1.000 i/100ms
Version 40 1.000 i/100ms
Calculating -------------------------------------
Version 1 292.591 (± 0.7%) i/s (3.42 ms/i) - 609.000 in 2.081510s
Version 5 85.645 (± 1.2%) i/s (11.68 ms/i) - 176.000 in 2.055076s
Version 10 34.641 (± 0.0%) i/s (28.87 ms/i) - 72.000 in 2.078604s
Version 20 11.825 (± 0.0%) i/s (84.57 ms/i) - 24.000 in 2.029676s
Version 40 3.507 (± 0.0%) i/s (285.17 ms/i) - 8.000 in 2.281342s
Comparison:
Version 1: 292.6 i/s
Version 5: 85.6 i/s - 3.42x slower
Version 10: 34.6 i/s - 8.45x slower
Version 20: 11.8 i/s - 24.74x slower
Version 40: 3.5 i/s - 83.44x slower
--- By Error Correction Level ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Level :l (7%) 26.000 i/100ms
Level :m (15%) 30.000 i/100ms
Level :q (25%) 27.000 i/100ms
Level :h (30%) 29.000 i/100ms
Calculating -------------------------------------
Level :l (7%) 297.489 (± 0.3%) i/s (3.36 ms/i) - 598.000 in 2.010190s
Level :m (15%) 307.389 (± 0.7%) i/s (3.25 ms/i) - 630.000 in 2.049575s
Level :q (25%) 288.344 (± 0.3%) i/s (3.47 ms/i) - 594.000 in 2.060071s
Level :h (30%) 295.327 (± 0.3%) i/s (3.39 ms/i) - 609.000 in 2.062147s
Comparison:
Level :m (15%): 307.4 i/s
Level :l (7%): 297.5 i/s - 1.03x slower
Level :h (30%): 295.3 i/s - 1.04x slower
Level :q (25%): 288.3 i/s - 1.07x slower
--- Creation vs Rendering ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Create only 29.000 i/100ms
Create + render 29.000 i/100ms
Render only 28.000 i/100ms
Calculating -------------------------------------
Create only 294.409 (± 0.7%) i/s (3.40 ms/i) - 609.000 in 2.068685s
Create + render 289.981 (± 0.7%) i/s (3.45 ms/i) - 580.000 in 2.000234s
Render only 291.282 (± 0.3%) i/s (3.43 ms/i) - 588.000 in 2.018688s
Comparison:
Create only: 294.4 i/s
Render only: 291.3 i/s - 1.01x slower
Create + render: 290.0 i/s - 1.02x slower
--- Multi-segment Encoding ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Single segment 14.000 i/100ms
Multi-segment 19.000 i/100ms
Calculating -------------------------------------
Single segment 145.551 (± 0.7%) i/s (6.87 ms/i) - 294.000 in 2.019949s
Multi-segment 196.185 (± 5.1%) i/s (5.10 ms/i) - 399.000 in 2.041346s
Comparison:
Multi-segment: 196.2 i/s
Single segment: 145.6 i/s - 1.35x slower
================================================================================
Performance benchmark complete!
================================================================================
|