gpt4 book ai didi

ruby-on-rails - 在 ruby​​ 中覆盖 hash 和 eql 会影响性能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:35:49 24 4
gpt4 key购买 nike

以下对性能的影响有多大?我担心这可能会产生很大的影响,因为我到处都在使用它。我不确定它们每个被调用的位置(即 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

最佳答案

覆盖方法本身不会影响性能,但方法的实现很重要。你的方法不好,因为它有多余的东西。最好写成:

def eql?(other)
url = self.url and other and url == other.url
end

url = self.url 是内存。


你原本有五个条件让它成立:

  • 不是其他 == false
  • 不是 url == nil
  • 不是其他 == nil
  • 不是 other.url == nil
  • url == other.url

其中,

  • 可以通过在条件中加入url 来将No1 和No3 放在一起。
  • No4 在 No2 和 No5 下是多余的,因为如果 url 不是 nil,并且 other.urlurl,则 other.url 不是 nil

关于ruby-on-rails - 在 ruby​​ 中覆盖 hash 和 eql 会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16880145/

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