從數據庫我加載約1000行。爲什麼調用很多匿名函數太慢?
我有一個打印表的類。鑑於我定義一些規則,幾乎對每一列,例如:
<% table.rules :date_uzp, lambda { |row| l row.date_uzp if row.date_uzp.present? } %>
<% table.rules :another_column, lambda { |row| helper_method row } %>
而在最後,只需要調用<%= table.print%>,它爲表生成HTML。
爲什麼我需要一個特殊的類來生成表?表格在這個項目中是非常具體的,所以遵循DRY的原則,我有類。
但是有一個問題,如果我處理幾乎所有的列和調用匿名函數,它是如此之慢。 (匿名功能被稱爲大約10 000次,我知道,這是相當多的,但它不能這麼慢)頁面正在加載大約50秒。
問題在哪裏?你有什麼建議?
你有沒有把它命名?你爲什麼確定它是關於lambda表達式的,而不是關於內部的代碼或你的類正在做什麼? – Anton
當我對調用lambdas發表評論時,它會將頁面加載時間從50秒減少到2秒。 –
但你爲什麼認爲這是'lambda'而不是本地化,'date_uzp'調用(這是兩次BTW),'helper_method',甚至是ERB? –