Ruby 可能比你想象的要快

主要观点:作者看到一个允许在 Ruby 文件中内联编写和运行 Crystal 方法的项目,其 README 示例中的基准测试结果看似合理但存在问题,Ruby 实现有细微错误导致工作更多,通过避免某些数组分配等操作可提升性能,最后启用 Ruby 的内置 JIT 编译器后 Ruby 比 Crystal 快很多。
关键信息:项目可在 Ruby 中内联 Crystal 方法;README 示例中 Ruby 和 Crystal 版本性能对比;Ruby 实现中多重赋值导致的问题及改进方法;启用 JIT 编译器后的性能对比。
重要细节:

  • 示例中 Ruby 的Fibonnaci模块包含fib_rbfib_cr方法,分别用于计算斐波那契数列,通过基准测试比较性能。
  • Ruby 多重赋值a, b = b, a + b实际等效于a, b = [b, a + b],在特定情况下会导致数组分配。
  • 改进 Ruby 实现的方法,如添加; nil避免隐含返回导致的数组分配,内联循环等。
  • 启用 JIT 编译器后 Ruby 性能大幅提升,比 Crystal 快很多,可能存在 FFI 等相关成本导致的开销。
阅读 140
0 条评论