代码之家  ›  专栏  ›  技术社区  ›  Andrew Grimm atk

在哪些版本的Ruby中,外部迭代器的速度得到了提高?

  •  2
  • Andrew Grimm atk  · 技术社区  · 14 年前

    根据 this rubyquiz ,外部迭代器以前很慢,但现在更快了。这是仅在yarv(Ruby1.9的基于C的实现)中可用的改进,还是在Ruby1.8.7的基于C的实现中也可用?

    而且,确实 enum_for 依赖外部迭代器?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Marc-André Lafortune    14 年前

    Ruby1.9使用光纤实现 Enumerator#next 这可能比Ruby1.8更好,但仍然使它成为一个昂贵的调用。

    enum_for 返回一个 Enumerator 但不依赖外部迭代器。只有在需要时,即如果您致电 next 但如果你打电话的话就不行了 each 或从继承的任何其他方法 Enumerable .

    Rubinius和Jruby正在优化 下一个 对于内置类型,因为很难实现,特别是在JVM上。有趣的睡前阅读: this thread on ruby-core

        2
  •  0
  •   jer    14 年前

    Rubinius也有一些主要的性能增强,但它是Ruby1.8实现,而不是1.9。