Domanda

Ho una domanda che recupera alcuni dati. Voglio visualizzare i dati considerando alcune condizioni in diversi tag div. Ora la mia domanda è, Sto facendo questo dal looping la query una volta e ottenere i dati in tre diverse strutture e l'utilizzo di questi struct durante la visualizzazione. E 'questo un approccio bene o scorrendo l'ogni query in ogni div per controllare la condizione è l'approccio 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> 

o posso utilizzare il metodo seguito

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
È stato utile?

Soluzione

Credo che dovrete modificare la tua domanda un po ', mettere un po' esempio.

Meno looping è sempre l'approccio migliore :) Meno di conversione, se non necessario, è migliore approccio:)

Se i dati sono in una query, che non c'è alcuna necessità di ciclo più di una volta, immagino ...

Altri suggerimenti

L'approccio migliore sarà sempre dipenderà dal vostro problema specifico.

Anche se un minor numero di iterazioni del ciclo saranno sempre tradurrà in prestazioni più veloci, a volte può essere accettabile a sacrificare alcune prestazioni per il bene di una migliore leggibilità.

I costi di manutenzione sono di solito la parte più costosa del software, quindi vale la pena di rendere il codice di facile lettura.

In questo caso specifico:

  • A meno che il risultato della query getAttributes è insolitamente grande (come sopra 10000 righe) o la pagina viene caricata insolitamente spesso (come più di una volta / sec), probabilmente non fare una differenza notevole quanti volte si esegue un ciclo su di esso.

  • Entrambe le opzioni avrà esattamente la stessa quantità di tempo, comunque: i primi cicli di opzione oltre la query due volte. La seconda opzione scorre l'interrogazione volta per popolare due struct, quindi i loop codice di visualizzazione attraverso ciascuna delle struct generati (che combinato avere lo stesso numero di elementi della query ha righe), con conseguente esattamente lo stesso numero di iterazioni totale ( equivalente a getAttributes.recordcount*2).

  • Il codice che divide i risultati dell'interrogazione su in diverse struct è alquanto insolito, diminuendo così la leggibilità e aumento dei costi manutenzione ove. Dal momento che in realtà non migliorare le prestazioni, è del tutto controproducente e non deve essere utilizzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top