How I Made Ruby Faster Than Ruby
9 months ago
- #Performance
- #Ruby
- #Templating
- P2是一个面向Ruby的全新HTML模板库,它将模板源代码编译成高效的Ruby代码以生成HTML。
- P2模板以Ruby Proc形式表达,这些Proc会被编译成将HTML片段推入缓冲区的代码,并自动对动态值进行正确转义。
- 编译过程包括将模板源代码解析为Prism抽象语法树,将相关节点转换为自定义类型,最终生成优化后的Ruby代码。
- P2通过分离静态与动态HTML生成、移除rescue子句、使用冻结字符串字面量、改用ERB::Escape.html_escape等方法实现了性能提升。
- 基准测试表明P2编译后的模板性能现已与ERB/ERubi持平,显著快于Papercraft、Phlex等非编译方案。
- 文章强调Ruby代码经过适当优化后可以非常高效,并指出这种Ruby到Ruby的编译技术可应用于其他领域特定语言(DSL)。