Question

Lequel de ces est plus efficace dans ColdFusion?

isDefined('url.myvar')

ou

structKeyExists(url, 'myvar')
Était-ce utile?

La solution

Ces jours (CF8 +) la différence de vitesse est pas que great. Cependant, structKeyExists est en effet un peu plus vite. Voici pourquoi.

Lorsque vous utilisez isDefined, la chaîne que vous passez est recherché comme nom de clé dans plusieurs champs d'application. A partir de CF9, la liste des champs, dans l'ordre est vérifiée: ( )

  1. Local (fonction locale, et CFC seulement UDFs)
  2. Arguments
  3. Enfiler locale (à l'intérieur des fils uniquement)
  4. Requête (pas une véritable portée, applique pour les variables dans les boucles de la requête)
  5. Discussion
  6. Variables
  7. CGI
  8. cffile
  9. URL
  10. Formulaire
  11. Cookie
  12. Client

Même si vous utilisez le nom de champ avec isDefined (comme: if isDefined('variables.foo')) la liste sera toujours vérifiée afin; et si elle est définie la local.variables.foo variable, il sera trouvé avant variables.foo.

D'autre part, structKeyExists ne recherche que la structure que vous passez pour l'existence du nom de la clé; donc il y a beaucoup moins de places, il devra regarder.

En utilisant un code plus explicite (structKeyExists), non seulement vous gagne un peu de performance, mais votre code est plus lisible et maintenable, à mon avis.

Autres conseils

Utilisez celui qui est plus facile à lire et meilleurs spectacles ce que vous faites.

La différence entre les deux est très petit, et très probablement pas la peine se soucier du tout.

Ne pas perdre le code en optimisant le temps, sauf si vous avez un prouvé et répétable cas de test qui démontre la lenteur.

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