|
master: ruby 4.1.0dev (2026-08-05T17:06:40Z master 895084e65b) +PRISM [arm64-darwin25]
|
|
subseq-embed: ruby 4.1.0dev (2026-08-05T18:34:39Z str-subseq-embed-fix 59a866255f) +PRISM [arm64-darwin25]
|
|
|
|
--------------------- ------------- ----------------- -------------------- -------------------
|
|
bench master (ms) subseq-embed (ms) subseq-embed 1st itr master/subseq-embed
|
|
activerecord 149.5 ± 2.1% 146.3 ± 0.7% 1.031 1.022
|
|
chunky-png 502.1 ± 0.3% 501.3 ± 0.3% 1.000 1.002
|
|
erubi-rails 662.0 ± 0.3% 664.5 ± 0.3% 1.023 0.996
|
|
hexapdf 1255.5 ± 0.2% 1276.7 ± 0.7% 0.977 0.983
|
|
liquid-c 31.3 ± 6.6% 31.2 ± 7.0% 1.008 1.003
|
|
liquid-compile 29.0 ± 6.7% 28.3 ± 5.5% 0.983 1.023
|
|
liquid-render 80.3 ± 2.5% 80.0 ± 2.2% 0.984 1.004
|
|
lobsters 476.2 ± 0.9% 474.4 ± 0.8% 1.051 1.004
|
|
mail 68.4 ± 1.5% 68.3 ± 1.4% 0.985 1.001
|
|
psych-load 1280.4 ± 1.0% 1238.3 ± 0.9% 1.000 1.034
|
|
railsbench 920.2 ± 1.2% 907.4 ± 1.4% 1.018 1.014
|
|
rubocop 101.3 ± 5.8% 101.8 ± 5.9% 1.007 0.995
|
|
ruby-lsp 97.6 ± 1.1% 94.9 ± 1.6% 1.001 1.029
|
|
sequel 30.9 ± 3.4% 31.0 ± 3.5% 0.993 0.997
|
|
shipit 827.1 ± 1.3% 826.1 ± 1.5% 0.977 1.001
|
|
addressable-equality 350.7 ± 0.4% 352.8 ± 0.3% 1.006 0.994
|
|
addressable-getters 88.5 ± 0.9% 87.8 ± 0.8% 1.012 1.008
|
|
addressable-join 167.1 ± 0.8% 164.7 ± 0.7% 1.010 1.015
|
|
addressable-merge 91.5 ± 0.6% 90.4 ± 0.7% 1.036 1.012
|
|
addressable-new 42.3 ± 0.7% 42.4 ± 0.8% 0.963 0.998
|
|
addressable-normalize 197.3 ± 1.2% 196.9 ± 0.4% 0.997 1.002
|
|
addressable-parse 135.8 ± 0.6% 135.3 ± 0.4% 1.004 1.004
|
|
addressable-setters 77.3 ± 0.9% 77.6 ± 0.7% 0.973 0.995
|
|
addressable-to-s 88.0 ± 0.6% 87.4 ± 0.7% 1.009 1.007
|
|
binarytrees 225.7 ± 0.4% 226.7 ± 0.4% 1.004 0.995
|
|
blurhash 251.4 ± 0.8% 250.9 ± 0.3% 0.987 1.002
|
|
erubi 122.7 ± 0.6% 123.0 ± 2.0% 0.987 0.997
|
|
etanni 209.2 ± 0.5% 209.7 ± 0.5% 1.004 0.998
|
|
fannkuchredux 357.6 ± 0.3% 357.0 ± 0.3% 1.002 1.002
|
|
fluentd 254.5 ± 0.5% 245.2 ± 0.5% 1.072 1.038
|
|
gcbench 1291.1 ± 0.2% 1297.5 ± 0.3% 0.992 0.995
|
|
graphql 39.4 ± 1.0% 39.5 ± 0.8% 1.040 0.997
|
|
graphql-native 176.3 ± 0.4% 179.3 ± 0.4% 0.985 0.983
|
|
knucleotide 27.4 ± 6.3% 27.2 ± 4.7% 0.989 1.008
|
|
lee 501.2 ± 0.4% 499.0 ± 0.3% 0.995 1.004
|
|
matmul 358.4 ± 0.3% 358.7 ± 0.5% 1.000 0.999
|
|
nbody 63.8 ± 0.6% 63.8 ± 0.4% 1.000 1.000
|
|
nqueens 162.8 ± 0.3% 162.8 ± 0.4% 1.000 1.000
|
|
optcarrot 3289.1 ± 0.7% 3303.8 ± 0.7% 0.996 0.996
|
|
protoboeuf 103.0 ± 0.4% 103.0 ± 0.5% 1.002 1.000
|
|
protoboeuf-encode 99.4 ± 1.3% 99.3 ± 1.3% 1.014 1.001
|
|
rack 31.4 ± 3.4% 31.6 ± 4.7% 1.005 0.996
|
|
ruby-json 154.4 ± 0.5% 154.2 ± 0.5% 1.002 1.001
|
|
rubyboy 3093.1 ± 0.1% 3117.6 ± 0.2% 0.995 0.992
|
|
rubykon 577.5 ± 1.4% 577.3 ± 1.4% 1.001 1.000
|
|
splay 90.1 ± 64.2% 92.0 ± 61.1% 0.982 0.979
|
|
sudoku 398.7 ± 0.2% 399.5 ± 0.2% 0.994 0.998
|
|
tinygql 382.1 ± 0.3% 380.7 ± 0.3% 0.999 1.004
|
|
30k_ifelse 342.5 ± 0.8% 339.9 ± 0.6% 1.008 1.008
|
|
30k_methods 286.2 ± 1.0% 288.7 ± 0.4% 0.985 0.991
|
|
attr_accessor 128.0 ± 0.5% 127.9 ± 0.5% 0.999 1.001
|
|
cfunc_itself 60.6 ± 0.7% 60.8 ± 0.5% 0.997 0.997
|
|
fib 161.8 ± 0.5% 162.2 ± 0.4% 0.995 0.998
|
|
getivar 90.9 ± 0.7% 90.8 ± 0.6% 0.999 1.001
|
|
getivar-module 183.3 ± 0.5% 183.1 ± 0.5% 0.999 1.001
|
|
keyword_args 144.1 ± 0.4% 142.3 ± 0.6% 1.013 1.013
|
|
loops-times 715.6 ± 0.3% 711.7 ± 0.2% 1.005 1.005
|
|
object-new 35.2 ± 0.8% 35.2 ± 0.8% 0.998 1.000
|
|
object-new-initialize 71.3 ± 0.8% 71.0 ± 0.6% 1.002 1.004
|
|
object-new-no-escape 138.8 ± 0.5% 138.5 ± 0.4% 1.007 1.002
|
|
respond_to 152.7 ± 0.3% 151.6 ± 0.4% 1.008 1.007
|
|
ruby-xor 85.4 ± 0.7% 85.3 ± 0.5% 1.002 1.002
|
|
send_bmethod 147.0 ± 0.3% 147.6 ± 1.3% 0.978 0.996
|
|
send_cfunc_block 191.9 ± 0.4% 191.8 ± 0.6% 0.999 1.000
|
|
send_rubyfunc_block 98.0 ± 0.5% 97.4 ± 0.4% 1.006 1.006
|
|
setivar 60.3 ± 0.8% 60.4 ± 0.7% 0.998 0.999
|
|
setivar_object 68.4 ± 1.2% 68.2 ± 1.2% 1.001 1.004
|
|
setivar_young 68.5 ± 1.3% 68.2 ± 1.2% 0.984 1.005
|
|
str_concat 55.3 ± 0.7% 55.5 ± 0.6% 0.992 0.996
|
|
structaref 131.2 ± 1.5% 132.9 ± 0.5% 1.016 0.987
|
|
structaset 118.8 ± 0.5% 118.9 ± 0.7% 1.000 1.000
|
|
throw 14.0 ± 1.3% 13.9 ± 1.3% 1.006 1.008
|
|
--------------------- ------------- ----------------- -------------------- -------------------
|
|
|
|
GC summary:
|
|
------- --------------- ---------------- ------------- -------------- ------------- ------------- -------------
|
|
bench mark/iter ratio sweep/iter ratio mark/GC ratio sweep/GC ratio major/iter minor/iter minor GC %
|
|
gcbench 0.696 0.994 0.670 0.957 0.0 → 0.0 54.0 → 52.0 100% → 100%
|
|
------- --------------- ---------------- ------------- -------------- ------------- ------------- -------------
|
|
|
|
Legend:
|
|
- subseq-embed 1st itr: ratio of master/subseq-embed time for the first benchmarking iteration.
|
|
- master/subseq-embed: ratio of master/subseq-embed time. Higher is better for subseq-embed. Above 1 represents a speedup.
|
|
- GC summary compares master → comparison. Ratio columns are master/comparison; above 1 means the comparison spent less GC time.
|
|
- mark/iter ratio and sweep/iter ratio compare total GC phase time per benchmark iteration, so they include both per-GC cost and GC frequency changes.
|
|
- mark/GC ratio and sweep/GC ratio compare average phase time per GC, isolating whether each GC became cheaper or more expensive.
|
|
- major/iter, minor/iter, and minor GC % show master → comparison values, not ratios. Rows with no GC activity are omitted.
|