Skip to content

Instantly share code, notes, and snippets.

@jsvd
Created May 5, 2016 09:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jsvd/e9769fdd219b8d549216ab93c0fe5390 to your computer and use it in GitHub Desktop.
Save jsvd/e9769fdd219b8d549216ab93c0fe5390 to your computer and use it in GitHub Desktop.
$i = 1
class A
def m
instance_eval "@v_#{$i} = 1"
$i = $i + 1
end
end
def new_instance
A.new.m
nil
end
s = Time.now
1_000_000.times do |i|
if i % 10000 == 0
puts "(#{i}) last 10000 iteration took #{Time.now - s}s"
s = Time.now
new_instance()
else
new_instance()
end
end
$ cat ivar_hell.rb
$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
$ ruby ivar_hell.rb
(0) last 10000 iteration took 6.136e-06s
(10000) last 10000 iteration took 0.468596995s
(20000) last 10000 iteration took 1.013960991s
(30000) last 10000 iteration took 1.340206003s
(40000) last 10000 iteration took 1.484439639s
(50000) last 10000 iteration took 1.781446295s
(60000) last 10000 iteration took 2.132031787s
(70000) last 10000 iteration took 2.505281806s
(80000) last 10000 iteration took 2.686239691s
(90000) last 10000 iteration took 3.013230595s
(100000) last 10000 iteration took 3.305966179s
(110000) last 10000 iteration took 3.574423993s
(120000) last 10000 iteration took 3.879910485s
(130000) last 10000 iteration took 4.333488317s
(140000) last 10000 iteration took 4.584951165s
(150000) last 10000 iteration took 4.932804317s
^C
$ rvm use jruby
Using /home/jsvd/.rvm/gems/jruby-9.0.5.0
$ ruby ivar_hell.rb
(0) last 10000 iteration took 0.022s
(10000) last 10000 iteration took 6.936s
(20000) last 10000 iteration took 14.802s
(30000) last 10000 iteration took 27.517s
^C
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment