Ruby speed quiz

For each case choose the fastest option.

Platform, which hosted this quiz was closed. So it will be read only for some time.

1. Range cover? VS include?

( 'a' .. 'z' ) . include?( 'f' )

( 'a' .. 'z' ) . cover?( 'f' )

both run with similar speed

2. blk.call VS yield

def foo yield if block_given? end foo { puts "Hi from foo" }

both run with similar speed

def bar ( & blk) blk . call end bar { puts "Hi from bar" }

3. Hash [] VS fetch

h = {} h [ :a ] || 1

h = {} h . fetch( :a , 1 )

both run with similar speed

4. super with OR without arguments

class Parent def bar (a, b) puts " #{ a } - #{ b } " end end class Child < Parent def bar (a, b) super (a, b) end end c = Child . new c . bar( 1 , 2 )

both run with similar speed

class Parent def bar (a, b) puts " #{ a } - #{ b } " end end class Child < Parent def bar (a, b) super end end c = Child . new c . bar( 1 , 2 )

5. define_method VS class_eval (definition, NOT call speed)

class A 100 . times do | i | define_method( "foo_ #{ i } " ) { 10 . times . map { "foo" . length } } end end

class B 100 . times do | i | class_eval 'def bar_#{i}; 10.times.map { "foo".length }; end' end end

both run with similar speed

Check yourself:

2 1 3 2 1

Here you could find an explanation for each case.