【问题标题】:List implementation in ruby?在 ruby​​ 中列出实现?
【发布时间】:2011-10-31 00:42:06
【问题描述】:

我有点难以理解 Ruby 中的 Array 类。我在谷歌上看过 Array 类实际上更像是一个列表,但我似乎无法找到它的实际工作原理。

我真的很关心性能问题,因为我必须处理大型排序列表,并且 我不想跨过整个数组来添加单个元素。

所以我想知道是否有任何 真实 和明确的列表实现(例如在 caml 中),并且我也在寻找关于如何实现 Array 的方法的良好文档,关于优化很重要。

谢谢!

【问题讨论】:

  • 如果您真的关心性能,那么您应该更关心 Ruby benchmark,或者完全使用不同的语言,因为 Ruby 语言的设计目的是为了方便,不快。

标签: ruby arrays performance list


【解决方案1】:

Ruby 数组提供完整的列表接口:

  • push/<< 用于在末尾添加元素
  • each 提供了一个遍历列表的迭代器
  • sort 允许您使用自定义比较器的可选块对项目进行排序
  • ...

因此,显然不需要特殊的 List 类或模块 - 以 Java 为例,如果我们一直需要 List,我们最终会使用 ArrayList,因为它为我们提供了良好的性能和额外的好处通过索引访问元素。因此 Ruby(类似于 Python、PHP 或 Lua 等其他语言)试图通过仅提供三种类型(ArrayHashSet)来保持集合类型的简单性,因此具有丰富的界面,使得可以轻松模拟其他集合类型,例如 List、Queue 或 Deque 等。

如果您想了解有关实现的详细信息,我建议您只需下载 Ruby 源代码并研究相应的文件(对于 MRI,它位于顶级目录中的 array.c)。

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    相关资源
    最近更新 更多