ruby - 在 Ruby 中是否有性能原因更喜欢大小而不是长度或计数?

标签 ruby methods collections

Airbnb's Ruby Style Guide一个建议是:

Prefer size over either length or count for performance reasons.

这些性能原因是什么?

最佳答案

好像有点不对,对于大多数常用的情况(Array, Hash, String),sizelength 要么是别名,要么是以相同的方式实现的(你可以阅读更多 here 或检查每个方法的实现)并且将在 O(1).

计数 但是:

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

总而言之,我会说

Prefer size or length over count for performance reasons.

会更准确。

关于ruby - 在 Ruby 中是否有性能原因更喜欢大小而不是长度或计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53480273/

相关文章:

mysql - 联合具有缺失值的集合 laravel

ruby - 为什么在二维数组中赋值会有不同的结果?

ruby - MongoDB聚合数据生成 'latest activity'

java - 如何从 Java POJO 调用单例方法?

python - 如何避免Python中的多个扁平if条件?

java - 链表的不同实现

ruby-on-rails - 部署时 Capistrano -"Cannot allocate memory - git"

ruby - Jekyll 似乎已经停止处理页面

ruby - 如何在 Ruby 中将方法作为参数传递?

java - 如何减少代码中List的使用?