2

一部のデータを取得するクエリがあります。そのデータをdivタグごとに条件をつけて表示したい。今私の質問は、クエリを 1 回ループし、3 つの異なる構造体でデータを取得し、表示中にこれらの構造体を使用することでこれを行っていることです。これは良いアプローチですか、それとも各 div で毎回クエリをループして条件を確認するのが適切なアプローチですか?

     <tr >
<td >
  features:
 </td>
 <td >
    <cfloop query="getAttributes">
      <cfif getAttributes.type_id EQ 1>
        #getAttributes.seat#<br>
      </cfif>
    </cfloop>
 </td>
</tr>
<tr>
 <td >
  Disclosures:
 </td>
 <td >
    <cfloop query="getAttributes">
   <cfif getAttributes.type_id EQ 2>
          #getTicketAttributes.seat#<br>
   </cfif>
  </cfloop>
  </td>
 </tr> 

または、以下のアプローチを使用できますか

seatStruct 
disclosureStruct 
<cfloop query="getAttributes">  
<cfif getAttributes.type_id EQ 1> 
Insert seatStruct 
<cfelseif getAttributes.type_id EQ 2> 
insert disclosureStruct 
</cfif> 
Now use these structs to display
4

2 に答える 2

4

質問を少し編集する必要があると思います。例を挙げてください。

ループを少なくすることが常に最善のアプローチです:)必要がない場合は変換を少なくすることが最善のアプローチです:)

データが1つのクエリに含まれている場合、複数回ループする必要はないのではないかと思います...

于 2010-05-06T06:53:21.710 に答える
0

最善のアプローチは、常に特定の問題によって異なります。

ループの反復回数が少ないほど常にパフォーマンスが向上しますが、読みやすさを向上させるためにパフォーマンスをいくらか犠牲にしても許容される場合があります。

通常、メンテナンス コストはソフトウェアの最も高価な部分であるため、コードを読みやすくすることは価値があります。

この特定のケースでは:

  • クエリgetAttributes結果が異常に大きい (10000 行を超えるなど) か、このページが異常に頻繁に読み込まれる (1 秒間に 1 回以上など) 場合を除き、おそらくループ回数に大きな違いはありません。

  • とにかく、どちらのオプションもまったく同じ時間がかかります。最初のオプションは、クエリを 2 回ループします。2 番目のオプションは、クエリを 1 回ループして 2 つの構造体にデータを設定し、次に表示コードが生成された各構造体をループして (クエリの行と同じ数の要素を組み合わせると)、合計反復回数がまったく同じになります (と同等getAttributes.recordcount*2)。

  • クエリの結果を異なる構造体に分割するコードはやや変わっているため、可読性が低下し、メンテナンス コストが増加します。実際にはパフォーマンスが向上しないため、完全に非生産的であり、使用しないでください。

于 2012-12-22T05:22:40.443 に答える