主要观点:作者看到一个允许在 Ruby 文件中内联编写和运行 Crystal 方法的项目,其 README 示例中的基准测试结果看似合理但存在问题,Ruby 实现有细微错误导致工作更多,通过避免某些数组分配等操作可提升性能,最后启用 Ruby 的内置 JIT 编译器后 Ruby 比 Crystal 快很多。
关键信息:项目可在 Ruby 中内联 Crystal 方法;README 示例中 Ruby 和 Crystal 版本性能对比;Ruby 实现中多重赋值导致的问题及改进方法;启用 JIT 编译器后的性能对比。
重要细节:
- 示例中 Ruby 的
Fibonnaci
模块包含fib_rb
和fib_cr
方法,分别用于计算斐波那契数列,通过基准测试比较性能。 - Ruby 多重赋值
a, b = b, a + b
实际等效于a, b = [b, a + b]
,在特定情况下会导致数组分配。 - 改进 Ruby 实现的方法,如添加
; nil
避免隐含返回导致的数组分配,内联循环等。 - 启用 JIT 编译器后 Ruby 性能大幅提升,比 Crystal 快很多,可能存在 FFI 等相关成本导致的开销。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。