2013-12-12 90 views
3

我加入了bullet gem在開發中告知我任何N + 1個查詢的渴望加入後負荷(滑軌4.0.2) 它建議的模型的急切裝載兩家母公司協會在那裏我展示所有的記錄。Rails的子彈寶石更慢建議

預先加載之前的其中一個屬於對協會:

Completed 200 OK in 5252ms (Views: 1.8ms | ActiveRecord: 114.1ms) 

預先加載後:

Completed 200 OK in 6741ms (Views: 2.1ms | ActiveRecord: 146.0ms) 

此外,通過預先加載,控制檯說完成,並沒有按後瀏覽器掛起」 t更新爲一個年齡(約6秒)。服務器生產沒有這個凍結的問題,但仍然看起來在這種情況下,急切的加載是不好的建議。

是否有意義的是預先加載速度可能很慢?該視圖不會訪問(急切加載的)父記錄。

而且子彈寶石不顯示某些原因調用堆棧。

回答

3

另外,在加載過程中,瀏覽器掛起後控制檯說完成並且不會更新一個年齡(大約6秒)。

正如我今天發現的那樣,它可能是Bullet本身造成的。究其原因,是因爲它插入其中要經過和分析您的查詢之前的瀏覽器可以接收該頁面的中間件。所以可以想象,你的查詢的任何變化可能會影響子彈的速度。

通過我的應用程序中的一個取出子彈,我得到了我的網頁速度慢去掉一個額外的延遲,同時還降低了實際的報告一整秒渲染時間。

所以,當你做你的比較,包括子彈做禁用(無論是在配置還是從Gemfile中暫時刪除和運行bundle)。它仍然是一個有價值的工具,但顯然對於一些應用程序可能是一個好主意,定期,當你試圖優化的事情,只啓用它。