Angepinnt Code Optimierung

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Beitrag von IPrototypeI ()

      Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.

      Beitrag von NicoAiko ()

      Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
    • Schwabbel schrieb:

      Char Arrays
      ...
      Spoiler anzeigen
      Das ist ein Thema was ich wirklich jedem ans Herz lege !

      Jeder kennt folgendes:

      PAWN-Quellcode

      1. new var[MAX_PLAYERS];
      2. if(var[playerid] == 1)

      Nun das ist aber verdammt schlecht !

      Jede Zelle bzw Spalte im Array verbraucht 4 Bytes, da MAX_PLAYERS (ohne das Makro zu verändern) eine größe von 500 hat, würde diese Variable:

      Quellcode

      1. 4Bytes * 500Bytes = 2000 Bytes


      verbrauchen !
      Aus diesem Grund sogenannte char-Arrays verwenden, dass sähe dann so aus:

      PAWN-Quellcode

      1. new var[MAX_PLAYERS char];
      2. if(var{playerid} == 1) //Vorsicht: Hier { } verwenden anstatt [ ] !!!

      Hier würde jede Zelle bzw Spalte im Array nur 1nen Byte verbrauchen !
      Sprich wir verbrauchen 500 Bytes anstatt 2000 ! ^^

      Wichtig noch zu beachten, das geht nur bei 1 dimensionalen Arrays und auch nur bei Integern, wenn man das mit strings machen will muss man strpack benutzen (aber das ist eine andere Geschichte)...

      Außerdem ist zu beachten, dass nur Werte von 0-255 möglich sind!
      Sprich:

      PAWN-Quellcode

      1. new test[MAX_PLAYERS char];
      2. test{0} = 259; //Ist nicht möglich, da größer 255!


      Kann ich char-Arrays auch ganz normal per "format" formatieren, oder muss ich das iwie anders machen :P



      Danke an Blunt für die Signatur! :love:


      Beitrag von Kaliber ()

      Dieser Beitrag wurde vom Autor gelöscht ().

      Beitrag von Kaliber ()

      Dieser Beitrag wurde vom Autor gelöscht ().
    • @Kaliber:
      Das ist durchaus richtig, aber gepackte strings sind nicht gleich normale strings, solltest du eigentlich wissen.

      format und printf sind leider nicht in der Lage richtig gepackte Arrays zu verarbeiten.
      print allerdings schon, das gibt die strings richtig aus.

      Wenn man etwas verkleinert, und versucht etwas größeres reinzustopfen, hat man irgendwann einen überlauf.
      Das würdest du so erreichen, einen "buffer overflow".

      Darum, lokae variable, welche man dann mit strpack in den Array verfrachtet.
      "Bevor ich mir Informationen aus der "Bild" hole,
      werde ich anfangen, Wahlergebnisse danach vorauszusagen,
      neben welchen Busch unsere Katze gepinkelt hat."
      Margarete Stokowski

      Beitrag von Kaliber ()

      Dieser Beitrag wurde vom Autor gelöscht ().

      Beitrag von Dog ()

      Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: anderen Thread ().

      Beitrag von Kaliber ()

      Dieser Beitrag wurde vom Autor gelöscht ().