2008年6月25日,星期三

锋芒初露 (或 Edge Rails 的新功能) #2 - 性能改进

作者:Chu Yeow

上一篇锋芒初露的文章介绍了一些 Rails 2.1 以来 API 的变化,而这一次,我将兑现承诺,介绍 **性能改进**。

直入主题…

更快的 Erb 模板

Jeremy Kemper 提高了 Erb 处理的效率,特别是 concatcapture 辅助方法。

“特殊”的 Erb _erbout 已被实例变量替换,这使得

  • (内存)性能更好,因为不再传递 bindings
  • 减少了通常开销很大的 evals,
  • 无需在可以替换新(字符串)缓冲区时切片 _erbout 变量,并且
  • 可以通过 output_buffer 读写方法访问缓冲区(这样您就可以根据需要重写它)。

相关提交:933697a
- 0bdb7d3
- 4d4c8e2

更快的局部模板和 JavaScript 辅助方法

Jeremy Kemper 对局部模板初始化和 JavaScript 辅助方法进行了重构和优化,以提高速度和效率。这只是 Jeremy 近期提交的一些优化。一定要查看一些 Rails 的提交记录(或者任何高质量的开源项目)——您可能会学到一些东西!

相关提交:局部模板JavaScript 辅助方法

RecordIdentifier 方法加速

通过一些简单的记忆化(memo-ization)使用,RecordIdentifier 得到了加速,从而减少了执行的变位次数等。RecordIdentifier 被广泛用于缓存键、局部模板路径以及大多数不需要关心实际 id 的 ActiveRecord 模型标识的地方。

Jeremy Kemper 的相关提交:c1a9820566d717

惰性加载缓存和会话存储

更新:抱歉,此更改后来在 6573f6a 中被撤销。

ActiveSupport::Cache 模块中的各种缓存存储现在是惰性加载的——这意味着只有当您实际开始使用它们时,它们才会被 require

Pratik Naik 的提交