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: 32
================================================================================
--- By Data Size ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Small (v1) 15.000 i/100ms
Medium URL (v5) 4.000 i/100ms
Large (v24) 1.000 i/100ms
Calculating -------------------------------------
Small (v1) 157.084 (± 1.3%) i/s (6.37 ms/i) - 315.000 in 2.005624s
Medium URL (v5) 47.562 (± 0.0%) i/s (21.03 ms/i) - 96.000 in 2.018539s
Large (v24) 4.871 (± 0.0%) i/s (205.28 ms/i) - 10.000 in 2.052893s
Comparison:
Small (v1): 157.1 i/s
Medium URL (v5): 47.6 i/s - 3.30x slower
Large (v24): 4.9 i/s - 32.25x slower
--- By Encoding Mode ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Numeric 15.000 i/100ms
Alphanumeric 10.000 i/100ms
Byte 10.000 i/100ms
Calculating -------------------------------------
Numeric 156.505 (± 1.3%) i/s (6.39 ms/i) - 315.000 in 2.013128s
Alphanumeric 107.068 (± 0.9%) i/s (9.34 ms/i) - 220.000 in 2.055093s
Byte 108.765 (± 0.0%) i/s (9.19 ms/i) - 220.000 in 2.022717s
Comparison:
Numeric: 156.5 i/s
Byte: 108.8 i/s - 1.44x slower
Alphanumeric: 107.1 i/s - 1.46x slower
--- By QR Version (same data) ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Version 1 15.000 i/100ms
Version 5 4.000 i/100ms
Version 10 1.000 i/100ms
Version 20 1.000 i/100ms
Version 40 1.000 i/100ms
Calculating -------------------------------------
Version 1 157.271 (± 1.3%) i/s (6.36 ms/i) - 315.000 in 2.003261s
Version 5 47.417 (± 2.1%) i/s (21.09 ms/i) - 96.000 in 2.024843s
Version 10 19.648 (± 0.0%) i/s (50.90 ms/i) - 40.000 in 2.035866s
Version 20 6.649 (± 0.0%) i/s (150.40 ms/i) - 14.000 in 2.105758s
Version 40 1.978 (± 0.0%) i/s (505.44 ms/i) - 4.000 in 2.021854s
Comparison:
Version 1: 157.3 i/s
Version 5: 47.4 i/s - 3.32x slower
Version 10: 19.6 i/s - 8.00x slower
Version 20: 6.6 i/s - 23.65x slower
Version 40: 2.0 i/s - 79.49x slower
--- By Error Correction Level ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Level :l (7%) 16.000 i/100ms
Level :m (15%) 16.000 i/100ms
Level :q (25%) 15.000 i/100ms
Level :h (30%) 15.000 i/100ms
Calculating -------------------------------------
Level :l (7%) 159.714 (± 0.6%) i/s (6.26 ms/i) - 320.000 in 2.003752s
Level :m (15%) 158.220 (± 1.3%) i/s (6.32 ms/i) - 320.000 in 2.022874s
Level :q (25%) 158.007 (± 1.3%) i/s (6.33 ms/i) - 330.000 in 2.088762s
Level :h (30%) 158.423 (± 0.6%) i/s (6.31 ms/i) - 330.000 in 2.083124s
Comparison:
Level :l (7%): 159.7 i/s
Level :h (30%): 158.4 i/s - same-ish: difference falls within error
Level :m (15%): 158.2 i/s - same-ish: difference falls within error
Level :q (25%): 158.0 i/s - same-ish: difference falls within error
--- Creation vs Rendering ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Create only 15.000 i/100ms
Create + render 15.000 i/100ms
Render only 15.000 i/100ms
Calculating -------------------------------------
Create only 158.820 (± 1.3%) i/s (6.30 ms/i) - 330.000 in 2.078049s
Create + render 156.129 (± 1.9%) i/s (6.40 ms/i) - 315.000 in 2.018189s
Render only 156.248 (± 1.3%) i/s (6.40 ms/i) - 315.000 in 2.016389s
Comparison:
Create only: 158.8 i/s
Render only: 156.2 i/s - same-ish: difference falls within error
Create + render: 156.1 i/s - same-ish: difference falls within error
--- Multi-segment Encoding ---
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin24]
Warming up --------------------------------------
Single segment 7.000 i/100ms
Multi-segment 10.000 i/100ms
Calculating -------------------------------------
Single segment 78.534 (± 1.3%) i/s (12.73 ms/i) - 161.000 in 2.050505s
Multi-segment 106.325 (± 0.9%) i/s (9.41 ms/i) - 220.000 in 2.069446s
Comparison:
Multi-segment: 106.3 i/s
Single segment: 78.5 i/s - 1.35x slower
================================================================================
Performance benchmark complete!
================================================================================
|