以下会影响性能多少?我担心这可能会产生很大影响,因为我到处都使用它。我不确定每个被调用的位置(即include?
调用这些方法,|
}也是如此,但任何其他主要方法都可能导致性能下降。
class Source
def hash
url.hash
end
def ==(other)
eql?(other)
end
def eql?(other)
return false if other == false || url == nil || other == nil || other.url == nil
url == other.url
end
end
答案 0 :(得分:5)
覆盖方法本身不会影响性能,但方法的实现很重要。你的方法很糟糕,因为它有多余的东西。它可以更好地写成:
def eql?(other)
url = self.url and other and url == other.url
end
url = self.url
是记忆。
<小时/> 您最初有五个条件可以实现:
其中,
url
置于条件中,可以将No1和No3放在一起。url
不是nil
而other.url
是url
,则other.url
不是nil
}。