日記帳

日記です。

Ruby アクセサメソッドの速度

いろいろいじってると attr_reader を使って定義した getter は速いってことに気が付いた.

class Hello
	attr_reader :message
end

class Hello2
	def message() @message end
end

def test(obj)
	start = Time::now
	0.upto(2000000){ obj.message }
	puts "#{obj.class} : #{(Time::now - start)}"
end

test(Hello::new)
test(Hello2::new)

こんなコードを走らせると下のような結果になる.なんでだろうか?

Hello : 2.348104
Hello2 : 4.371438