diff options
| author | Earlopain <14981592+Earlopain@users.noreply.github.com> | 2026-01-19 22:31:13 +0100 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2026-01-19 23:54:39 +0000 |
| commit | 16adb9303f912b994e6d03ef4211849e9a9473fb (patch) | |
| tree | 77b8979d7fe201a26a2323e5531c70cfcd9f9783 /lib/bundler/man/bundle-licenses.1.ronn | |
| parent | c939330b7a0e747f8a0a079df6d272b01d2ecbd0 (diff) | |
Creating state classes is pretty expensive.
Since they are not modifiable, we can reuse them instead.
Benchmark script:
```rb
require "ripper"
require "prism"
require "benchmark/ips"
codes = Dir["**/*.rb"].map { File.read(it) }
Benchmark.ips do |x|
x.config(time: 10)
x.report("prism") { codes.each { Prism::Translation::Ripper.lex(it) } }
x.report("ripper") { codes.each { Ripper.lex(it) } }
x.compare!
end
```
Before:
```
ruby 4.0.0 (2025-12-25 revision https://github.com/ruby/prism/commit/553f1675f3) +PRISM [x86_64-linux]
Warming up --------------------------------------
prism 1.000 i/100ms
ripper 1.000 i/100ms
Calculating -------------------------------------
prism 0.293 (± 0.0%) i/s (3.42 s/i) - 3.000 in 10.248348s
ripper 0.633 (± 0.0%) i/s (1.58 s/i) - 7.000 in 11.055687s
Comparison:
ripper: 0.6 i/s
prism: 0.3 i/s - 2.16x slower
```
After
```
ruby 4.0.0 (2025-12-25 revision https://github.com/ruby/prism/commit/553f1675f3) +PRISM [x86_64-linux]
Warming up --------------------------------------
prism 1.000 i/100ms
ripper 1.000 i/100ms
Calculating -------------------------------------
prism 0.486 (± 0.0%) i/s (2.06 s/i) - 5.000 in 10.280413s
ripper 0.635 (± 0.0%) i/s (1.58 s/i) - 7.000 in 11.027169s
Comparison:
ripper: 0.6 i/s
prism: 0.5 i/s - 1.31x slower
```
https://github.com/ruby/prism/commit/bdde16554c
Diffstat (limited to 'lib/bundler/man/bundle-licenses.1.ronn')
0 files changed, 0 insertions, 0 deletions
