Frage zu enums

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich hab mal ne kleine Frage zu Enums undzwar verwende ich für wirklich VIELES Enums, z.B. um Zeilen zu sparen, aber: Können Enums dem Server iwie schaden? Ich achte sehr drauf, dass ich immer Resourcensparend schreibe, aber kann ein Enum dazu führen, dass bspw der CPU überlastet wird (bzw die CPU auslastung extrem steigt) ?

  • Was soll an Enums Recourcenfressend sein


    Teste es doch:


    Erstell ein Script so:



    enum wiss
    {
    Nico,
    Wiss,
    Weiss,
    Nicht,
    Egal
    }
    new Wiss[MAX_PLAYERS][wiss];


    //Und bei OnGameModeInit mal alle Werte auf 1 setzen!


    Nun ein 2. Script



    new Nico[MAX_PLAYERS];
    new Wiss[MAX_PLAYERS];
    ....

  • ob ihr

    new pHouse[MAX_PLAYERS];
    new pKills[MAX_PLAYERS];


    oder

    enum pInfo {
    pHouse,
    pKills
    };
    new g_pInfo[MAX_PLAYERS][pInfo];

    schreibt
    nimmt sich "gar nichts" ;)



    beides wird gleich viel Ram verwenden ;) Beide male müssen 2 x MAX_PLAYERS *Speicherblöcke* reserviert werden. Und auch bei beiden wird die .amx größer

  • Enum ist immer sparender wie wenn man alles einzeln macht auserdem hast du mit enum nehr und einfachere möglichkeiten


    ENum und sparender?
    Ich glaub du weißt nicht wo von du sprichst :D


    Man sagt enums sind schneller als PVars
    Man sieht enums Sparen Recourcen: Statt 100 mal ein new name new password new lp nur PlayerInfo


    Enum ist eine Struktur und keine Form von Variablen, somit hast du automatisch unrecht.


    Dazu solltest du die Arraygrösse nur so einstellen das diese nicht übersteht.


    Und was machen enums?


    Wie schon von mir erwähnt stellen sie eine Struktur dar.


    ich versuchs mal einfach zu erklären, vielleicht schreib ich nachher mal ein tutorial darüber.


    enum Struk
    {
    Nico,
    Wiss,
    Weiss,
    Es[5],
    Nicht
    }// Das ist jetzt keine Anspielung o.ä. ich hab das einfach nur kopiert :D
    So jetzt haben wir unsere Struktur, die im Grunde auch als Präprozessor, genauer Konstante, dient.
    Diese hat einen Wert von 9 bzw. "Struk" hat den Wert 9.
    Somit können wir sie mit 0 - 8 ansprechen wie wir lustig sind ohne die Namen nutzen zu "müssen".


    Gut kommen wir erstmal dazu, warum es überhaupt einen Wert von 9 hat, obwohl da 5 Variablen/Namen stehen.
    Der Array "Es[5]" wird auch mit gezählt und hat 5 Werte.
    Nico = 0
    Wiss = 1
    Weiss = 2
    Es = 3 - 7
    Nicht = 8


    Wenn wir jetzt die dazugehörige Variable Initialisieren, erstellen wir automatisch einen Array.
    I.d.R. wird er 2 Dimensional gehandelt.
    Ich mach hier nur einen ein Dimensionalen
    new Var[Struk];
    Die Deklaration kann überall stattfinden, ob in einer Funktion/Callback oder außerhalb von Funktionen.


    In der Theorie steht hier aber new Var[9];


    Grundsätzlich falsch, aber eigentlich auch nicht :D


    Denn wir können den Array via
    Var[2] = 6;
    nicht ansprechen.
    Man würde einen Tag Mismatch bekommen.


    Nun kommt der Strukturen-/Enumname zum einsatz
    Var[Struk:2] = 6; ist also möglich.


    Was ich euch damit sagen will, ist:
    Enums sind KEINE Variablen, sie sind Auflistungen von Konstanten :thumbup:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Du willst jetzt sagen deine Struktur ist langsamer als wenn du alles mit Variablen regelst?


    Das hab ich nie gesagt, die Geschwindigkeit ändert sich dadurch sicherlich nicht

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski