Frage

Welche dieser ist effizienter in Coldfusion?

isDefined('url.myvar')

oder

structKeyExists(url, 'myvar')
War es hilfreich?

Lösung

In diesen Tagen (CF8 +) die Geschwindigkeitsdifferenz ist nicht , die groß. Allerdings ist structKeyExists in der Tat ein wenig schneller. Hier ist der Grund.

Wenn Sie isDefined verwenden, die Zeichenfolge, die Sie in PASS für als Schlüsselnamen in verschiedenen Bereichen gesucht. Ab CF9, die Liste der Bereiche, geprüft in der Reihenfolge: ( Quelle )

  1. Local (Funktion lokal, UDF und FCKW nur)
  2. Argumente
  3. Thread-lokal (Innengewinde nur)
  4. Abfrage (keine wahre Umfang, gilt für Variablen innerhalb Abfrage Loops)
  5. Thema
  6. Variablen
  7. CGI
  8. cffile
  9. URL
  10. Form
  11. Cookie
  12. Client

Auch wenn Sie die Bereichsnamen mit isDefined verwenden (wie: if isDefined('variables.foo')) wird die Liste noch um überprüft werden; und wenn der Variable local.variables.foo definiert ist, wird man finden, bevor variables.foo.

Auf der anderen Seite sucht structKeyExists nur die Struktur, die Sie es für die Existenz des Schlüsselnamen übergeben; so gibt es viel weniger Plätze es zu sehen haben.

Mit dem expliziten Code (structKeyExists), sind Sie nicht nur eine Leistung zu gewinnen, aber der Code ist besser lesbar und wartbar, meiner Meinung nach.

Andere Tipps

Verwenden Sie die eine, die ist leichter lesen und am besten zeigt, was Sie tun.

Der Unterschied zwischen den beiden ist unglaublich klein und sehr wahrscheinlich nicht der Mühe wert überhaupt.

Verschwenden Sie keine Zeit zu optimieren Code nicht, wenn Sie ein haben bewiesen und wiederholbar Testfall , die die Langsamkeit demonstriert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top