gpt4 book ai didi

ruby - 什么在 Ruby : defining the alias method or using alias_method? 中运行得更快

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:59 24 4
gpt4 key购买 nike

什么在以后调用时更快:

def first_method?() second_method?() end

alias_method :first method, :second_method

如果可能的话,为什么?

(注意:我不问什么更好/更好等等 -> 这里只有原始速度以及为什么它更快很有趣)

最佳答案

至少在 Ruby 1.8.6 中,别名似乎更快:

#!/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

结果:

$ ./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)

显然,您有一个方法调用较少(查找接收器...)。所以它变得更快似乎很自然。

关于ruby - 什么在 Ruby : defining the alias method or using alias_method? 中运行得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com