2011-12-13 66 views
3

在努力加快我的測試套件我型材,並得到以下
爲什麼Kernel#需要佔用我45%的時間?

Total: 1445 samples 
    650 45.0% 45.0%  1171 81.0% Kernel#require 
    261 18.1% 63.0%  261 18.1% garbage_collector 
    47 3.3% 66.3%  168 11.6% Kernel.load 
    39 2.7% 69.0%  82 5.7% Module#class_eval 
    27 1.9% 70.9%  817 56.5% ActiveSupport::Dependencies::Loadable#load_dependency 
    25 1.7% 72.6%  58 4.0% Enumerable#find 
    25 1.7% 74.3%  25 1.7% Module#constants 
    20 1.4% 75.7%  1171 81.0% Kernel#gem_original_require 
    19 1.3% 77.0%  19 1.3% File.file? 
    18 1.2% 78.3%  415 28.7% Kernel.require 
. 
. 
. 

從這個答案Why is Kernel#require taking such a big chunk of my application's resources?餘噸,似乎這種預期,但我在這裏數量龐大着實吃了一驚。這是真的嗎?我們不能做任何事嗎?

+0

這是一個Rails應用程序或非Rails應用程序? – 2011-12-13 21:42:33

+0

這是一個Rails應用程序。 – 2011-12-14 11:27:57

回答

0

對此你可以做的事情不多,因爲require步驟實際上是爲你的Ruby應用程序構建AST的 - 它在運行時是「構造的」。你需要做的是將你的分析分離到已經完成所有應用程序加載的位置(例如,對某個操作執行幾次幹運行,然後執行分析運行)。通過這種方式,您將從基準測試中排除編譯步驟。

此外請確保您使用的是1.9.3而不是1.9.2,因爲有一個修復程序可以加速需求。

相關問題