rbs icon indicating copy to clipboard operation
rbs copied to clipboard

Degradation of parsing performance with v4.0.0.dev.4

Open ksss opened this issue 6 months ago • 0 comments

Prepare

The target file is https://github.com/ruby/gem_rbs_collection/blob/main/gems/activerecord/8.0/activerecord-generated.rbs

$ cat parse.rb
require 'rbs'
require 'benchmark/ips'

sig = Pathname('../gem_rbs_collection/gems/activerecord/8.0/activerecord-generated.rbs').read
Benchmark.ips do |x|
  x.report("rbs v#{RBS::VERSION} parse activerecord-generated.rbs") do
    RBS::Parser.parse_signature(sig)
  end
end

Runner

$ bundle exec rake templates lexer compile
$ bundle exec ruby parse.rb

Comparison

v3.9.4

ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
rbs v3.9.4 parse activerecord-generated.rbs
                         3.000 i/100ms
Calculating -------------------------------------
rbs v3.9.4 parse activerecord-generated.rbs
                         34.219 (± 0.0%) i/s   (29.22 ms/i) -    174.000 in   5.085551s

v4.0.0.dev4

ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
rbs v4.0.0.dev.4 parse activerecord-generated.rbs
                         2.000 i/100ms
Calculating -------------------------------------
rbs v4.0.0.dev.4 parse activerecord-generated.rbs
                         30.880 (± 3.2%) i/s   (32.38 ms/i) -    156.000 in   5.053877s

Rate

34.219 / 30.880
=> 1.108128238341969

I could observe a degradation in parsing performance of about 10%.

ksss avatar Jun 23 '25 14:06 ksss