1

私のアプリは、パフォーマンスの最適化を開始する必要があるポイントに到達しています。私の見解から、改善できると思うコードをいくつか投稿しました。

ビューでは、インデックスの最初のアイテムを特定の方法で処理し、残りのアイテムを別の方法で処理しています。新しいアイテムが繰り返されるたびに、チェックされます(Rubyは自分自身に尋ねます。このアイテムのインデックスは0ですか?)

index.first?最初のアイテムを特別なもので処理し、他のアイテムを別の方法で処理することで(インデックスがゼロかどうかを確認せずに)その動作を停止できれば、パフォーマンスが向上するように感じます。これはどのように行うことができますか?

  <% @links.each_with_index do |link, index| %>
    <% if link.points == 0 then @points = "?" else @points = link.points %>
    <% end %>
    <% if index == 0 then %>
      <h1> First Item </h1>
    <% else %>
      <h1> Everything else </h1>
    <% end %>
  <% end %>
<% end %>
4

1 に答える 1

3

あなたはこのように非破壊的にこれを行うことができます:

first, *rest = *my_array
# Do something with 'first'
rest.each{ |item| … }

first最初の要素(またはnilmy_arrayが空の場合)はどこにrestあり、常に配列(おそらく空)になります。

配列を変更しても問題がない場合は、同じ結果をより簡単に取得できます。

# remove the first item from the array and return it
first = my_array.shift
# do something with 'first'
my_array.each{ |item| … }

ただし、これはコードをクリーンアップするだけです。測定可能なパフォーマンスの違いはありません。

于 2012-04-29T17:25:53.690 に答える