是否出于性能方面的原因而倾向于使用大小而不是长度或使用Ruby?

时间:2018-11-26 11:36:32

标签: ruby methods collections

Airbnb's Ruby Style Guide中,读为:

  

出于性能方面的考虑,将size优先于lengthcount

这些会是什么?

1 个答案:

答案 0 :(得分:5)

似乎有些错误,对于大多数常用情况(ArrayHashString),sizelength都是别名或以相同的方式实现(您可以阅读更多here或检查每种方法的实现),并将在O(1)中运行。

count

  • 对于Hash来说,它没有重新定义,并且会回退到Enumerable#count,这意味着其复杂度将是O(n),因为会遍历所有键值。
  • 对于Array,它是重新定义的(Array#count),至少它将检查给定的参数个数,这是Array#sizeArray#length都不需要做。
  • 对于String,它用于计数子字符串。

总而言之,我会说

  

出于性能方面的考虑,sizelength胜过count

会更准确。