瞎扯淡 Ruby 2.6 不开 JIT,会比 Ruby 2.5 快吗?

Wire2Brain · 2019年02月08日 · 最后由 yfractal 回复于 2019年02月12日 · 2695 次阅读

个人感觉自己写的控制台程序莫名其妙的黑屏卡机少了一些,是我的心理作用吗?

ruby2.6 不开 jit,会比 ruby2.5 快吗?

ksec 回复

这个加速主要是由什么内容引起的?

Lonely_Man01 回复

对老版本代码的优化调整
综合快多少可以看下 benchmark. 单向优化的在 issue 里面也有 benchmark 对比。

参攷 2.6.0 Release News 的性能提升章节

  • 由于移除了对 $SAFE 临时赋值的支持,提升 Proc#call 的速度。[功能 #14318]

通过 lc_fizzbuzz 多次使用 Proc#call 的 benchmark 我们测量到了 1.4 倍性能提升 [漏洞 #10212]

  • 提升了当 block 是代码块参数时 block.call 的性能。[功能 #14330]

通过与 Ruby 2.5 中引入的提升代码块传递的性能的方法结合,Ruby 2.6 进一步提升了传递代码块调用时的性能。通过 micro-benchmark 我们观察到了 2.6 倍性能提升。[功能 #14045]

瞬态堆是用于管理指向特定类(Array、Hash、Object 和 Struct)短生命周期内存对象的堆。例如,创建小而短生命周期的哈希对象的速度提升到了 2 倍快。根据 rdoc benchmark,我们观察到了 6% 到 7% 的性能提升。

  • 协程采用了原生实现(arm32arm64ppc64lewin32win64x86amd64)显著提升了 Fiber 的性能。 [功能 #14739]

Fiber.yieldFiber#resume 方法在 64 位 Linux 上提升了 5 倍性能。对于使用 Fiber 密集的程序,约有最高 5% 的性能提升。

这些提升都不是 JIT 带来的,Ruby 2.0 以来的每个大版本都有类似的性能优化。

dsh0416 回复

midori 性能会提升不少吧?

7 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号