Skip to content

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

@ksss

Description

@ksss

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%.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions