100万回ループの所要時間を調べようと思ったのですが

starttime = Time.now.to_f
for i in 1..1000000;end
p [Time.now.to_f - starttime]

と、

def bench
starttime = Time.now.to_f
yield
p [Time.now.to_f - starttime]
end
bench {for i in 1..1000000;end}

では 1割くらい前者のほうが速いのですが、何故でしょう?