Frage

Würde es Geschwindigkeitsdifferenz zwischen
sein

if (myInt == CONST_STATE1)

und

if (myEnum == myENUM.State1)

in c #?

War es hilfreich?

Lösung

In C # Aufzählungen sind in ausgekleideten Konstanten durch den Compiler ohnehin zu sein, so dass der Nutzen Code Lesbarkeit ist

Andere Tipps

Die Sache vorsichtig zu sein, wenn Aufzählungen verwenden, ist keine der Operationen zu verwenden, die Reflexion erfordern (oder sich mit Sorgfalt verwenden). Zum Beispiel:

  1. myEnumValue.ToString ().
  2. Enum.Parse ()
  3. Enum.IsDefined ()
  4. Enum.GetName ()
  5. Enum.GetNames ()

Bei Konstanten die Möglichkeit, alle Vorgänge zu tun, die Reflexion erfordert nicht vorhanden. Doch im Fall von Aufzählungen tut es. So werden Sie mit diesem vorsichtig sein.

Ich habe Profil Berichte gesehen, in denen Operationen Enum Validierungen im Zusammenhang / Reflexionen zu 5% der CPU-Zeit in Anspruch nahmen (ein Szenario, in dem ENUM-Validierungen auf jedem Aufruf eine API-Methode durchgeführt wurden). Dies kann erheblich reduziert werden, indem er eine Klasse, die die Ergebnisse der Reflexion der Aufzählungstypen Caches verwendet wird.

Having said that, Ich würde empfehlen, die Entscheidung zu treffen, mit Enum vs. Konstante auf, was Sinne von einer Design-Sicht macht . Dies ist gleichzeitig aber dafür sorgen, dass das Team der Auswirkungen auf die Leistung der Operationen bewusst ist beteiligt Reflexion.

Auch ich bin nicht sicher, dass Sie über diese überhaupt besorgt sein müssen. Es klingt wie vorzeitige Optimierung. Ich bin sicher, dass in jedem System gibt es größere Engpässe als ENUM-Vergleiche. :)

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