Je développe en utilisant ColdFusion et je voulais savoir quelle est la meilleure stratégie pour boucler sur un grand ensemble de résultats de requête. Y a-t-il une différence de performance entre l'utilisation de cfloop et cfoutput? Si non, y a-t-il une raison de préférer l'un à l'autre?cfloop vs cfoutput sur les requêtes
Répondre
Je crois qu'il y avait. Je pense que cette différence a été abordée, le mieux étant de faire un test pour chacun de tester dans votre cas d'utilisation spécifique.
<cfset t = GetTickCount()/>
<cf... query="qry">
<!--- Do something --->
</cf...>
<cfset dt = GetTickCount() - t/>
<cfdump var="#dt#"/>
<!---
If the differences are small you can use java.lang.System.nanoTime() instead
--->
Il existe cependant des différences notables. cfoutput
peut faire des boucles groupées, ce qui ne peut pas cfloop
.
<cfoutput query="qry" group="col">
<!--- Loops once for each group --->
<cfoutput>
<!--- Loops once for each record within the group --->
</cfoutput>
</cfoutput>
Pour cfoutput
vous pouvez spécifier le startrow
et le maxrows
(ou le nombre) pour paginer votre résultat. Pour cfloop
, vous devez spécifier l'index endrow
au lieu du nombre.
De même, vous ne pouvez pas utiliser cfoutput
pour une requête imbriquée dans une balise existante cfoutput
, vous devez d'abord terminer le fichier contenant cfoutput
.
Il n'y aurait pas de différence de performance en utilisant l'une ou l'autre méthode, cela dépend vraiment de votre style de codage. Si vous mettez un <cfoutput>
en haut et en bas de chaque page, alors utiliser <cfloop>
fonctionnera très bien. Si vous utilisez plusieurs <cfoutput>
et seulement l'endroit où ils sont nécessaires qui fonctionne aussi bien.
Personnellement, je mets <cfoutput>
seulement là où c'est nécessaire, mais je ne dirais pas que c'est plus correct que de les placer en haut et en bas de la page.
Vous avez oublié de mentionner la possibilité de pouvoir utiliser group = "" uniquement avec cfoutput (Railo 4 permet le groupe sur boucle). – Busches
Je crois qu'il est tout de même que la performance, Ben Forta
Et le reste est à peu près préférence personnelle pour autant que la façon dont vous « comme » de travailler avec votre boucle. Gardez à l'esprit que vous devez toujours définir vos variables, mais à l'intérieur d'une boucle cfoutput qui serait particulièrement importante car les champs de requête "pourraient" être référencés sans se référer à leur portée. Une des raisons pour lesquelles vous préférerez l'approche cfloop serait que vous deviez "échapper" cfoutput pendant votre boucle pour une raison quelconque. Je l'ai déjà rencontré plusieurs fois, donc je préfère généralement cfloop.
Une bonne raison d'utiliser cfloop au lieu de cfoutput est que si vous avez besoin de boucler une sortie de requête dans une autre sortie de requête, cfoutput ne prend pas en charge la sortie de requête imbriquée. Vous pouvez cependant vous en sortir en utilisant cfloops. Alors:
<cfoutput query="test1">
#test1ID#
<cfoutput query="test2">
#test2ID#
</cfoutput>
</cfoutput>
ne fonctionne pas, mais si vous remplacez les cfoutputs avec cfloops, il.
A partir de CF10, avec la possibilité de regrouper cfloops, c'est la seule différence fonctionnelle restante. Ils font tous les deux la même chose.
- 1. Groupe de requêtes ColdFusion cfoutput
- 2. cfloop et requête de requêtes
- 3. Utilisation de requêtes cfloop imbriquées
- 4. tri après une cfloop sur une collection
- 5. CFloop dans une boucle
- 6. cfloop dans les champs de formulaire dynamique
- 7. groupe par plusieurs colonnes SANS utiliser de fonctions d'agrégation ou de groupe en utilisant cfoutput/cfloop?
- 8. CFLoop et ListValueCount
- 9. cfoutput sur un fichier PDF
- 10. cfloop condition de requête vide?
- 11. compte currentrow de cfoutput à l'intérieur de cfoutput
- 12. Comment sortir de Cfoutput
- 13. ColdFusion cfoutput & articles exclus
- 14. ColdFusion10 - requête cfloop sur une requête d'insertion
- 15. Différence significative dans le temps alors que les tableaux peuplant (Coldfusion vs Railo)
- 16. Appel de cfoutput dans cfscript
- 17. CFloop Processing Extrêmement lent
- 18. cfloop numéro d'erreur timeot
- 19. dynamique cfloop conditionnelle
- 20. CFINVOKE vs java.lang.OutOfMemoryError dans ColdFusion
- 21. cfoutput requête sur une autre page en utilisant POST?
- 22. Définition dynamique des états de radiobutton via CFLOOP
- 23. coldfusion soustraire de la dernière itération dans cfloop
- 24. Tri des valeurs par propriété de cfoutput
- 25. Fonctions Firebase vs Requêtes multiples
- 26. comment exécuter cfloop sur struct résultats dans coldfusion
- 27. fait main requêtes vs findDependentRowset
- 28. variable cfml dans le texte cfoutput
- 29. CFOUTPUT avec requête de deux tables
- 30. Requêtes Laravel HTTP vs HTTPS
Dans ColdFusion 10, vous pouvez désormais effectuer une sortie groupée. – ale
Nice, je suppose que vous voulez dire groupés cfloops http://www.bennadel.com/blog/2359-ColdFusion-10-Using-The-Group-Attribute-With-CFLoop-To-Group-Query-Rows.htm –
Même chose pour Railo 4.0 –