从数据库我加载约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? –