jep*_*her 3 ruby collections methods
在Airbnb的Ruby样式指南中,其中写道:
不想
size通过任一length或count性能方面的原因。
这些会是什么?
这似乎有点不对劲,对最常用的情况下(Array,Hash,String),size且length要么别名或以相同的方式实现(你可以阅读更多在这里或检查每个方法的实现),将在运行O(1)。
count 然而:
Hash未重新定义for ,并将回退到Enumerable#count,这意味着其复杂性将O(n)遍历所有键值。Array它是重新定义的(Array#count),至少它将检查给定的参数数量,这既不是Array#size也不Array#length是必须要做的。String它用于计数子字符串。总而言之,我会说
出于性能方面的考虑,首选
size或length以上count。
会更准确。