Sha256: fd8faaa09a8dab4b58fd5462888f41649c0f320a44816e8c42ccfa4eb7fea371

Contents?: true

Size: 1.68 KB

Versions: 21

Compression:

Stored size: 1.68 KB

Contents

require 'benchmark'

$t = 3
$n = 100000

def report(header)
  puts header
  reals = []
  Benchmark.bm do |bm|
    $t.times do
      reals << bm.report { $n.times { yield } }.real
    end
  end

  [header, (reals.inject(&:+) / reals.count).round(5)]
end

multi = [
  /\/lib\d*\/ruby\//,
  /org\/jruby\//,
  /bin\//,
  %r|/gems/|,
  /lib\/rspec\/(core|expectations|matchers|mocks)/
]

union = [Regexp.union(multi)]

avgs = []

avgs << report("multi w/ match") {
  multi.any? {|e| e =~ "lib/rspec/core"}
}

avgs << report("union w/ match") {
  union.any? {|e| e =~ "lib/rspec/core"}
}

avgs << report("multi w/ no match") {
  multi.any? {|e| e =~ "foo/bar"}
}

avgs << report("union w/ no match") {
  union.any? {|e| e =~ "foo/bar"}
}

puts

avgs.each do |header, val|
  puts header, val
  puts
end

__END__

multi w/ match
       user     system      total        real
   0.400000   0.000000   0.400000 (  0.405063)
   0.410000   0.000000   0.410000 (  0.402778)
   0.430000   0.000000   0.430000 (  0.435447)
union w/ match
       user     system      total        real
   0.130000   0.000000   0.130000 (  0.127526)
   0.130000   0.000000   0.130000 (  0.135529)
   0.130000   0.000000   0.130000 (  0.127866)
multi w/ no match
       user     system      total        real
   0.320000   0.000000   0.320000 (  0.318921)
   0.330000   0.000000   0.330000 (  0.328375)
   0.340000   0.000000   0.340000 (  0.341230)
union w/ no match
       user     system      total        real
   0.170000   0.000000   0.170000 (  0.175144)
   0.170000   0.000000   0.170000 (  0.168816)
   0.170000   0.000000   0.170000 (  0.168362)

multi w/ match
0.41443

union w/ match
0.13031

multi w/ no match
0.32951

union w/ no match
0.17077

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
opal-rspec-1.1.0.alpha3 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-1.1.0.alpha2 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-1.1.0.alpha1 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-1.0.0 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-1.0.0.alpha1 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.8.0 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.8.0.alpha3 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.8.0.alpha2 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.8.0.alpha1 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.7.1 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.7.0 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.6.2 rspec-core/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.7.0.rc.2 rspec-core/upstream/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.6.1 rspec-core/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.6.0 rspec-core/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.6.0.beta1 rspec-core/benchmarks/several_regexps_v_one_big_one.rb
opal-connect-rspec-0.5.0 rspec-core/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.5.0 rspec-core/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.5.0.beta3 rspec-core/benchmarks/several_regexps_v_one_big_one.rb
opal-rspec-0.5.0.beta2 rspec-core/benchmarks/several_regexps_v_one_big_one.rb