在这种情况下,哪种模式会更快?
显然,带有助手的 Pattern1 看起来更加复杂并且看起来很干净。
但是每次调用 user_link 方法时它都会发送 SQL。
在这里,它在加载一页时最多调用 100 次。
哪种方式对基准性能更好?
模式1。有帮手
application_helper
def user_link(username)
link_to User.find_by_username(username).user_profile.nickname, show_user_path(username)
end
看法
<% @topics.order("updated_at DESC").limit(100).each do |topic| %>
<%= user_link(topic.comment_threads.order("id").last.user.username) if topic.comment_threads.present? %>
<% end %>
模式2。没有帮手。只看
<% @topics.order("updated_at DESC").limit(100).each do |topic| %>
<%= link_to(topic.comment_threads.order("id").last.user.nickname, show_user_path(topic.comment_threads.order("id").last.user.username) ) if topic.comment_threads.present? %>
<% end %>