是否有性能上的原因要在Ruby中优先考虑大小而不是长度或计数?

jep*_*her 3 ruby collections methods

Airbnb的Ruby样式指南中,其中写道:

不想size通过任一lengthcount性能方面的原因。

这些会是什么?

Mar*_*iej 5

这似乎有点不对劲,对最常用的情况下(ArrayHashString),sizelength要么别名或以相同的方式实现(你可以阅读更多在这里或检查每个方法的实现),将在运行O(1)

count 然而:

  • Hash未重新定义for ,并将回退到Enumerable#count,这意味着其复杂性将O(n)遍历所有键值。
  • 因为Array它是重新定义的(Array#count),至少它将检查给定的参数数量,这既不是Array#size也不Array#length是必须要做的。
  • 因为String它用于计数子字符串。

总而言之,我会说

出于性能方面的考虑,首选sizelength以上count

会更准确。