答案 0 :(得分:5)
似乎有些错误,对于大多数常用情况(Array
,Hash
,String
),size
和length
都是别名或以相同的方式实现(您可以阅读更多here或检查每种方法的实现),并将在O(1)
中运行。
count
,
Hash
来说,它没有重新定义,并且会回退到Enumerable#count
,这意味着其复杂度将是O(n)
,因为会遍历所有键值。Array
,它是重新定义的(Array#count
),至少它将检查给定的参数个数,这是Array#size
和Array#length
都不需要做。String
,它用于计数子字符串。总而言之,我会说
出于性能方面的考虑,
size
或length
胜过count
。
会更准确。