Question

J'ai une requête qui récupère des données. Je veux montrer que les données compte tenu des conditions dans les différentes balises div. Maintenant, ma question est, Je fais cela en boucle la fois la requête et d'obtenir les données en trois struct différents et l'utilisation de ces struct lors de l'affichage. Est-ce une bonne approche ou une boucle à travers la requête à chaque fois dans chaque div pour vérifier l'état est l'approche rirht?

     <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> 

Ou puis-je utiliser l'approche ci-dessous

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
Était-ce utile?

La solution

Je pense que vous devez modifier votre question un peu, mettez un peu d'exemple.

Moins looping est toujours la meilleure approche :) conversion moins si pas nécessaire est la meilleure approche:)

Si vos données sont dans une requête, qu'il n'y a pas besoin de boucler plus d'une fois, je suppose ...

Autres conseils

La meilleure approche dépendra toujours de votre problème spécifique.

Bien que moins d'itérations de la boucle toujours entraîner des performances plus rapides, parfois, il peut être acceptable de sacrifier un peu de performance pour des raisons de lisibilité.

coûts d'entretien sont généralement la plupart des logiciels coûteux, donc il vaut la peine de rendre votre code facile à lire.

Dans ce cas spécifique:

  • À moins que le résultat de la requête getAttributes est anormalement élevé (comme plus 10000 lignes) ou cette page est chargée anormalement souvent (comme plus une fois / sec), il ne sera probablement pas faire une différence notable combien fois la boucle au-dessus.

  • Les deux options se exactement la même quantité de temps, de toute façon: Les premières boucles d'option sur la requête deux fois. La deuxième option boucle dans la requête une fois pour remplir deux structs, puis les boucles de code d'affichage à travers chacun des structs générés (qui, combiné ont le même nombre d'éléments que la requête comporte des rangées), résultant en le même nombre exact d'itérations au total ( équivalent à getAttributes.recordcount*2).

  • Le code qui divise les résultats de la requête en différents struct est quelque peu inhabituelle, ce qui diminue la lisibilité et l'augmentation des coûts de Maintenence. Comme il ne s'améliore pas réellement les performances, il est tout à fait contre-productif et ne doit pas être utilisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top