改善Rails加载时间

gin*_*ime 8 performance ruby-on-rails-3

这是关于改进rails控制台加载时间的上一个问题的后续内容.

第一个伟大的建议是弄清楚哪些宝石需要太长时间.

下一个答案,建议稍后使用:require => nil加载这些宝石.

然而,对于一些宝石,如何在不破坏事物的情况下完成此任务并不完全清楚.这是我们"最大的罪犯"的列表,我想知道是否有人可以建议最好的方法只在必要时加载它们?

require gon: 2.730000 (2.870059)
require omniauth-openid: 1.410000 (1.503858)
require cancan: 2.640000 (2.707467)
require fog: 2.730000 (2.846530)
require activeadmin: 3.650000 (3.923877)
Run Code Online (Sandbox Code Playgroud)

当然还有更多需要大约1秒或更短的时间,这也加起来......但至少删除大的东西会改善一些事情.

如何在以后选择性地加载宝石以使轨道加载更快?

Chr*_*ald 14

虽然不是您问题的直接答案,但您可以尝试两件事:

首先,你试过1.9.3Falcon补丁吗?补丁包括一些非常显着的加载时间改进.

如果您正在使用RVM,则可以使用它进行快速安装

rvm install 1.9.3 --patch falcon -n falcon
Run Code Online (Sandbox Code Playgroud)

其次,确保您正在设置GC调整环境变量.默认情况下,Ruby会分配适用于小脚本的GC参数,但不适用于完整的Rails应用程序.以下是我的设置,但您希望根据应用程序的需求派生自己的设置:

% env | grep RUBY_
RUBY_HEAP_MIN_SLOTS=800000
RUBY_HEAP_FREE_MIN=100000
RUBY_HEAP_SLOTS_INCREMENT=300000
RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
RUBY_GC_MALLOC_LIMIT=79000000
Run Code Online (Sandbox Code Playgroud)

我的结果使用ruby 1.9.3-p286:

                    Stock     Stock+GC  Falcon   Falcon+GC
                    27.13     8.43      8.63     6.69
Stock       27.13   100.00%   31.07%    31.81%   24.66%
Stock+GC    8.43    321.83%   100.00%   102.37%  79.36%
Falcon      8.63    314.37%   97.68%    100.00%  77.52%
Falcon+GC   6.69    405.53%   126.01%   129.00%  100.00%
Run Code Online (Sandbox Code Playgroud)

设置GC调整参数有了最大的改进,但我们可以通过使用falcon补丁获得另外约26%的改进性能.falcon补丁和GC参数的组合使启动时间缩短了75%以上.