Sha256: b9804fb1047ae798d94ff8b0360cb5e3daaafad70759e0a64d57911a58c69e8c

Contents?: true

Size: 1.45 KB

Versions: 21

Compression:

Stored size: 1.45 KB

Contents

require 'benchmark'

n = 1_000_000

puts "Kernel.respond_to?(:warn)"

Benchmark.benchmark do |bm|
  3.times do
    bm.report do
      n.times do
       Kernel.respond_to?(:warn)
      end
    end
  end
end

puts "defined?(warn)"

Benchmark.benchmark do |bm|
  3.times do
    bm.report do
      n.times do
        defined?(warn)
      end
    end
  end
end

puts "Kernel.respond_to?(:foo)"

Benchmark.benchmark do |bm|
  3.times do
    bm.report do
      n.times do
        Kernel.respond_to?(:foo)
      end
    end
  end
end

puts "defined?(foo)"

Benchmark.benchmark do |bm|
  3.times do
    bm.report do
      n.times do
        defined?(foo)
      end
    end
  end
end

# $ ruby benchmarks/respond_to_v_defined.rb
# Kernel.respond_to?(:warn)
#    0.190000   0.000000   0.190000 (  0.206502)
#    0.190000   0.000000   0.190000 (  0.197547)
#    0.190000   0.000000   0.190000 (  0.189731)
# defined?(warn)
#    0.190000   0.000000   0.190000 (  0.187334)
#    0.180000   0.000000   0.180000 (  0.201078)
#    0.190000   0.000000   0.190000 (  0.202295)
# Kernel.respond_to?(:foo)
#    0.250000   0.010000   0.260000 (  0.255003)
#    0.240000   0.000000   0.240000 (  0.247376)
#    0.250000   0.000000   0.250000 (  0.251196)
# defined?(foo)
#    0.100000   0.000000   0.100000 (  0.104748)
#    0.110000   0.000000   0.110000 (  0.107250)
#    0.110000   0.000000   0.110000 (  0.107990)
#
# defined is consistently faster, but it takes 1,000,000 x to have a meaningful
# diff

Version data entries

21 entries across 21 versions & 2 rubygems

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