在Airbnb's Ruby Style Guide一个建议是:
Prefer
size
over eitherlength
orcount
for performance reasons.
这些性能原因是什么?
最佳答案
好像有点不对,对于大多数常用的情况(Array
, Hash
, String
),size
和 length
要么是别名,要么是以相同的方式实现的(你可以阅读更多 here 或检查每个方法的实现)并且将在 O(1)
.
计数
但是:
- 对于
Hash
没有重新定义,将回退到Enumerable#count
,这意味着它的复杂度将是O(n)
,因为将遍历所有键值。 - 对于
Array
它被重新定义 (Array#count
) 并且至少它会检查给定的参数数量,这既不是Array#size
也不是。也不Array#length
必须做。 - 对于
String
,它用于计算子字符串。
总而言之,我会说
Prefer
size
orlength
overcount
for performance reasons.
会更准确。
关于ruby - 在 Ruby 中是否有性能原因更喜欢大小而不是长度或计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53480273/