0

この場合、どちらのパターンが速くなりますか?
明らかに、ヘルパーを使用した Pattern1 は、はるかに洗練され、きれいに見えます。
ただし、user_link メソッドが呼び出されるたびに SQL を送信します。
ここでは、1 ページの読み込みで最大 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 %>
4

1 に答える 1

1

試す

# Topics model
#via scope
scope :get_topic_list, lambda do
  order("updated_at DESC").joins(:comment_threads => :user).limit(100)
end

#via method
def self.get_topic_list
  Topic.order("updated_at DESC").joins(:comment_threads => :user).limit(100)
end

# in your controller or move to model itself (recommened)
@topics = Topic.get_topic_list

# in you view
<% @topics.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 %>
于 2013-01-20T21:19:54.073 に答える