Ít nhất trong Ruby 1.8.6, răng cưa có vẻ là nhanh hơn :
#!/usr/local/bin/ruby
require 'benchmark'
$global_bool = true
class Object
def first_method?
$global_bool
end
def second_method?
first_method?
end
alias_method :third_method?, :first_method?
end
Benchmark.bm(7) do |x|
x.report("first:") { 1000000.times { first_method? }}
x.report("second:") { 1000000.times { second_method? }}
x.report("third:") { 1000000.times { third_method? }}
end
kết quả trong:
$ ./test.rb
user system total real
first: 0.281000 0.000000 0.281000 ( 0.282000)
second: 0.469000 0.000000 0.469000 ( 0.468000)
third: 0.281000 0.000000 0.281000 ( 0.282000)
Rõ ràng, bạn có một phương pháp gọi ít (receiver nhìn lên ...). Vì vậy, nó có vẻ tự nhiên cho nó được nhanh hơn.
Nguồn
2011-09-02 10:08:18
Không phải là nó rõ ràng rằng phiên bản đầu tiên có một tra cứu phương pháp bổ sung để làm gì? Rubinius đơn giản hóa một số mã để nó có thể giống hệt nhau. –