我必須分解成諧音一個相當大的響應查看誰結構看起來像這樣,其中*表示此部分加載不止一次:隨機軌道諧音慢100倍,比預期
show
-responses
--response*
---comments
----comment*
---comment_form
-stats
我的問題是取決於頁面的大小,這些部分中的大部分需要10-20ms才能渲染,但是這些部分中的幾個需要800-1000ms的渲染。似乎沒有一種模式,即使我快速刷新並且通常不刷新,模式也是如此。
我必須分解成諧音一個相當大的響應查看誰結構看起來像這樣,其中*表示此部分加載不止一次:隨機軌道諧音慢100倍,比預期
show
-responses
--response*
---comments
----comment*
---comment_form
-stats
我的問題是取決於頁面的大小,這些部分中的大部分需要10-20ms才能渲染,但是這些部分中的幾個需要800-1000ms的渲染。似乎沒有一種模式,即使我快速刷新並且通常不刷新,模式也是如此。
首先使用
<%= render partial: 'partial', collection: @collection, as: c %>
而不是
<% @collection.each do |c| %>
<%= render partial: 'partial', locals: { c: c } %>
<% end %>
這是顯而易見的,我不知道爲什麼我沒有這樣做。提供了一些改進,但數量不是很大。
如果你正在運行1.9.3正在增加,這些環境變量所做的巨大差異,敲約20%的要求:
RUBY_HEAP_MIN_SLOTS=600000 # This is 60(!) times larger than default
RUBY_GC_MALLOC_LIMIT=59000000 # This is 7 times larger than default
RUBY_HEAP_FREE_MIN=100000 # This is 24 times larger than default
通過:http://www.web-l.nl/posts/15-tuning-ruby-s-garbage-collector-with-rvm-and-passenger
更改Ruby GC參數以改善您的表現並不能回答您的問題:即使它在您的計算機上做得更好,它也不會在很多情況下出現,就好像您在說「如何花費更多錢?嘗試從取款機提取更多錢「 – 2014-06-10 15:08:10
假設你在MRI正在測試,我會認爲這是GC。 – phoet 2013-02-10 11:48:46
@msaspence當你不使用部分時會發生什麼,總體時間會大大減少 – Viren 2013-02-10 12:30:54
是的,如果我不使用partials,整體時間會急劇減少,大概是這些異常部分負載增加的量。這對我來說不是一個好選擇,因爲它是一個大視圖文件,我很快就會在其他視圖中使用這些部分。 我正在使用mri,有什麼我可以做的,以減輕GC的成本? – msaspence 2013-02-10 16:04:58