Beiträge von |-|auke

    Goldkiller: Das habe ich auch nicht geschrieben. Lies dir meine Posts bitte noch einmal genauer durch.
    Edit2: Jetzt habe ich das Missverständnis verstanden, bei meinem Beispiel ist die Fahrzeit die Zeit zwischen Lesen und neu Schreiben. Diese ist bei einem Bus natürlich deutlich höher als bei einem Auto. Allerdings transportiert dieser eine Größere Menge an Menschen, und wird somit das Auto bei größeren Mengen schlagen.
    Ich hoffe das ist nun verständlicher...


    Edit: "Dabei wurden 10 mal 100 Einträge hintereinander in eine Datei geschrieben und wieder ausgelesen." Sagt doch aus, dass hintereinander 100 Einträge geschrieben wurden.
    Wo liegt denn nun das Problem?

    Natürlich kann man das, unter gewissen Umständen.
    Man sollte beachten, für welchen Zweck die Includes entworfen wurden.
    Das Einsatzgebiet von HSA ist, wie in der Beschreibung erwähnt, das Speichern von Single-Entries - Also einzelne Datensätze.
    Du kannst ja mal HSA gegen SII und Dini antreten lassen, wenn nur ein oder 2 Datensätze geschrieben werden sollen...


    Wenn bei jeder Variablen-Änderung direkt einmal gespeichert wird, wird das höchstwahrscheinlich weniger Serverprobleme verursachen, als wenn man alle Daten aufeinmal schreibt. Natürlich kann man das nicht für jedes Einsatzgebiet verallgemeinern.

    @BlackAce: Das ist kein wirklicher Vergleich. Das ist so, als würde man einen Bus mit einem Auto vergleichen.
    Für ein paar Personen ist das Auto schneller, und transportiert diese schneller zum Ziel.
    Der Bus nimmt gleich die 10 Fache Menge an Menschen mit, und wird somit trotz der längeren Fahrzeit nach einer gewissen Zeit das Auto schlagen. Denn das Auto muss den Weg immer wieder zurück fahren...

    SII wird in diesem Fall bestimmt schneller sein.
    Es geht hierbei auch um das Speichern von einer geringeren Anzahl von Datensätzen.
    SII speichert alle 200 in einem Zug. HSA jedes einzeln.


    Cody09: Genau das ist der Einsatzbereich dieser Include.


    Ich werde mal versuchen eine Grafik zu erstellen, wann SII besser schneller ist im Speichern mehrerer Daten.

    Für 200 Einträge bei 200 Dateien braucht HSA ca. 40 Sekunden. (Laut Test)

    new temp[32];
    StartBench();
    for(new o = 0; o < 200; o++) {
    for(new i = 0; i < 200; i++) {
    format(temp,32,"int_%d",i);
    setInt:"testfile"(temp,1000);
    }
    }
    StopBench();


    Allerdings wird eine "Save-all" Funktion bei der Verwendung von HSA in den meisten Fällen überhaupt nicht mehr gebraucht.

    Ich war selbst etwas überrascht, aber bei den 10 Durchläufen von 100 mal Schreiben und Lesen kamen folgende Werte:
    [table=2]
    [*]HSA[*]SII
    [*]144,689[*]245,143
    [*]135,716[*]214,743
    [*]164,893[*]210,309
    [*]146,27[*]222,282
    [*]143,056[*]238,719
    [*]140,403[*]234,562
    [*]126,504[*]232,638
    [*]148,228[*]238,064
    [*]146,012[*]256,775
    [*]125,678[*]227,304
    [/table]
    Edit: Dass diese Werte in ms sind, versteht sich wohl von selbst.


    Danke :)

    Hallo,
    hier meine neuste include - HSA.


    HSA ist die wohl einfachste Art Daten in einer Datei zu speichern.
    Es gibt jeweils eine Funktion zum Lesen und eine zum Schreiben von Strings, Integer und Floats.
    Natürlich hat HSA einige Vorteile zu anderen Includes, die zum Speichern vorgesehen sind.

    • HSA ist sehr einfach zu bedienen!
    • HSA ist im Normalfall schneller als andere Systeme
    • HSA sichert die Daten automatisch
    • Weitere Vorteile werden mit Updates kommen...

    Hier ein Geschwindigkeitsvergleich von HSA zu SII. Dabei wurden 10 mal 100 Einträge hintereinander in eine Datei geschrieben und wieder ausgelesen.
    Aus den Werten wurde das arithmetische Mittel bestimmt.


    Man erkennt deutlich, dass HSA im Gegensatz zu SII wesentlich schneller ist!



    Nun zu den Funktionen:

    • getInt:
      getInt:"DateiName"("DatensatzName");
      Gibt die gespeicherte Zahl "DatensatzName" in der Datei "DateiName" zurück.


    • getFloat:
      getFloat:"DateiName"("DatensatzName");
      Gibt die gespeicherte Kommazahl "DatensatzName" in der Datei "DateiName" zurück.


    • getString:
      getString:"DateiName"("DatensatzName");
      Gibt den gespeicherten Text "DatensatzName" in der Datei "DateiName" zurück.


    • setInt:
      setInt:"DateiName"("DatensatzName",12356789);
      Speichert die Zahl "12356789" in die Datei "DateiName" unter dem Namen "DatensatzName";


    • setFloat:
      setFloat:"DateiName"("DatensatzName",1234.56789);
      Speichert die Kommazahl "1234.56789" in die Datei "DateiName" unter dem Namen "DatensatzName";


    • setString:
      setString:"DateiName"("DatensatzName","Beliebiger Text");
      Speichert den Text "Beliebiger Text" in die Datei "DateiName" unter dem Namen "DatensatzName";


    Mehr Funktionen benötigt das System nicht!
    Dateien werden natürlich automatisch erstellt.



    Beispielcodes:

    • Einfaches Speichern von Spielern:
      new PlayerName[MAX_PLAYER_NAME];
      GetPlayerName(playerid,PlayerName,MAX_PLAYER_NAME);


      setString:PlayerName("Passwort","Ich mag Züge");
      setInt:PlayerName("Bargeld",4125);
      setFloat:PlayerName("Leben",74.12);


      printf("Der Spieler %s hat das Passwort %s",PlayerName,getString:PlayerName("Passwort"));
      printf("Der Spieler %s hat noch %d$ Bargeld.",PlayerName,getInt:PlayerName("Bargeld"));
      printf("Der Spieler %s hat noch %f Leben.",PlayerName,getFloat:PlayerName("Leben"));

    • Einfache Fraktionskassen:

      setInt:"Fraktionskassen"("Polizei",81921);
      setInt:"Fraktionskassen"("Feuerwehr",56121);
      setInt:"Fraktionskassen"("Yakuza",1912);
      setInt:"Fraktionskassen"("Lufthansa",917251);


      printf("Die Polizei hat %d$ in der Fraktionskasse",getInt:"Fraktionskassen"("Polizei"));
      printf("Die Feuerwehr hat %d$ in der Fraktionskasse",getInt:"Fraktionskassen"("Feuerwehr"));
      printf("Die Yakuza hat %d$ in der Fraktionskasse",getInt:"Fraktionskassen"("Yakuza"));
      printf("Die Lufthansa hat %d$ in der Fraktionskasse",getInt:"Fraktionskassen"("Lufthansa"));


    Wann war das Speichern von Daten jemals so einfach?



    Links:


    KnastZeit[i]--;
    new suptextstring[128];
    format(suptextstring, sizeof suptextstring, "Knastzeit: %d:%d.",floatround(KnastZeit[i]/60,floatround_floor) , KnastZeit[i] - floatround(KnastZeit[i]/60,floatround_floor)*60);
    TextDrawSetString(KTime,suptextstring);
    TextDrawShowForPlayer(i,KTime);

    Hatte einmal /60 zu viel kopiert.
    Nun sollte es gehen.

    Wie kann man das nur nicht verstehen?
    In meinem Code ist die Variable "time" die Anzahl von Sekunden, die "umgerechnet" werden sollen! Das ist doch wirklich nicht schwer.


    Hier, so wie du es möchtest - bereit für Copy & Paste:

    KnastZeit[i]--;
    new suptextstring[128];
    format(suptextstring, sizeof suptextstring, "Knastzeit: %d:%d.",floatround(KnastZeit[i]/60,floatround_floor) , KnastZeit[i]/60 - floatround(KnastZeit[i]/60,floatround_floor)*60);
    TextDrawSetString(KTime,suptextstring);
    TextDrawShowForPlayer(i,KTime);


    Edit: 1x /60 zu viel.

    Ich hasse es, wenn Menschen meinen sie können scripten ohne überhaupt die Grundkenntnisse verstanden zu haben. Das hasse ich genauso, wie wenn Menschen code nur kopieren ohne sich die Funktionsweise auch nur einmal anzusehen...
    time stellt in meinem Code die Zeit in Sekunden dar, die "umgerechnet" werden soll.

    Und genau das macht dieser Code!

    new time = 421;
    printf("%d Sekunden sind: Minuten: %d und Sekunden: %d" , time , floatround(time/60,floatround_floor) , time - floatround(time/60,floatround_floor)*60);

    Vielleicht sind ja nicht wir die, die es nicht verstehen...

    Mach es so:

    new time = 421;
    printf("%d Sekunden sind: Minuten: %d und Sekunden: %d" , time , floatround(time/60,floatround_floor) , time - floatround(time/60,floatround_floor)*60);

    Angebote bitte nur in diesen Thread! Ich habe keine Lust mir alle Angebote per PN zu merken und dann keinen Überblick mehr darüber zu haben.


    Es hat noch niemand eine Verkaufsbestätigung von mir erhalten. Ebenso habe ich auch mit niemandem über Skype gesprochen oder gar irgendetwas ausgehandelt!
    Dieses kindische Diskussion stimmt mich nicht wirklich dazu ein Angebot von euch anzunehmen...