TruffleRuby 正则表达式:比 C 代码和 SIMD 更快 200 倍

2025-03-18
TruffleRuby 正则表达式:比 C 代码和 SIMD 更快 200 倍

本文探讨了在 Ruby 中进行 JSON 字符串转义的性能优化。作者通过基准测试比较了三种方法:纯 Ruby 版本、带有 SIMD 指令的 C 扩展以及 TruffleRuby 上的纯 Ruby 版本。结果令人惊讶:TruffleRuby 的纯 Ruby 版本利用其先进的 JIT 编译器和 TRegex 引擎,比 C 扩展和 SIMD 方法快 20 倍,甚至比基准测试中的 C 代码快 200 倍以上。这归功于 TruffleRuby 的 TRegex 引擎,它将正则表达式编译为确定性有限自动机,避免了回溯,并利用 SIMD 指令进行优化。作者还展示了 Time.new(String) 和 StringScanner#scan_integer 方法的类似对比,TruffleRuby 的正则表达式实现均显著优于 CRuby 的 C 实现。这表明,在某些情况下,简洁的纯 Ruby 代码结合高级 JIT 编译器,可以超越低级语言的性能。

开发 TruffleRuby