Gibt es die Funktion Löschen und Abfragen schon?
MFG,
Scriptor!
Gibt es die Funktion Löschen und Abfragen schon?
MFG,
Scriptor!
Dini ist die lahmste fileinclude, nur wollen das die leute nicht war haben...
Propaganda ist alles, man kann schon das ganze druchbringen, einfach ein paar Releases mit dem Include Release im Englischen Samp Forum mit bezeugnis das seins das schnellste ist im vergleich zu SII und sehr viel besser & schneller als Dini z.B. vllt
aber ich hätte da noch ne Frage,
und zwar, z.B. bei einem Save-All Befehl und nehmen wir an, ein User hat 200 Werte die gesetzt werden müssen.
Bei 200 User online, kommt es da zu laggs ?
Bei 200 User online, kommt es da zu laggs ?
Bei dini definitiv, bei HSA wäre ich mir nicht sicher, aber wohl nicht so wie bei dini^^
Kannst du die Beispielcodes zeigen, mit denen du die SII und HSA Testläufe gemacht hast?
Würde mich auch interessieren. Glaube nicht,dass SII wirklich langsamer sein soll als deins. Daher wäre es wirklich gut,mal den Testcode zu sehen ;).
Wenn Speed wirklich so wichtig ist,dann schaut auch Y_INIan ( Y_Less ) oder DOF2 ( Double-O-7 ) im offiziellem Forum.Letzteres benutzt sogar hashing, um die Einträge schneller zu finden.
Werde es benutzen wenn 1-2 updates kommen Dann schreib ich mein Script um aufjedenfall nice
Würde mich auch interessieren. Glaube nicht,dass SII wirklich langsamer sein soll als deins. Daher wäre es wirklich gut,mal den Testcode zu sehen ;).
Wenn Speed wirklich so wichtig ist,dann schaut auch Y_INIan ( Y_Less ) oder DOF2 ( Double-O-7 ) im offiziellem Forum.Letzteres benutzt sogar hashing, um die Einträge schneller zu finden.
Stimmt wäre recht interessant DOF2 wird jedoch nicht mehr supportet
http://pastebin.com/ujet3ySE ist anscheinend der Vergleich zwischen y-ini dof2 dof1 etc.
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.
Das soll der Test sein ? Der ist nicht gerade Aussagekräftig :\.
Ich mach mir einen eigenen Test fertig und behaupte jetzt schon mal,dass SII mit Abstand schneller sein wird ;).
Stimmt, gar nicht bedacht, du speicherst ja praktisch keine Variablen sondern man könnte auch alle Werte gleich abspeichern lassen
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.
@ |-|auke
Gibt es die Funktion Löschen und Abfragen schon?
MFG,
Scriptor!
Ich hab mal einen Test gemacht:
Ergebnis:
ZitatAlles anzeigen[18:56:01] HSA 2545ms
[18:56:01] DINI 10135ms
[18:56:01] SII 0769ms
[18:56:01] Gewinner Runde 1 -> SII
[18:56:15] HSA 2766ms
[18:56:15] DINI 10129ms
[18:56:15] SII 0807ms
[18:56:15] Gewinner Runde 2 -> SII
[18:56:28] HSA 2450ms
[18:56:28] DINI 9947ms
[18:56:28] SII 0752ms
[18:56:28] Gewinner Runde 3 -> SII
[18:56:41] HSA 2841ms
[18:56:41] DINI 9579ms
[18:56:41] SII 0747ms
[18:56:41] Gewinner Runde 4 -> SII
[18:56:54] HSA 2455ms
[18:56:54] DINI 9557ms
[18:56:54] SII 0784ms
[18:56:54] Gewinner Runde 5 -> SII
[18:57:07] HSA 2788ms
[18:57:07] DINI 10040ms
[18:57:07] SII 0889ms
[18:57:07] Gewinner Runde 6 -> SII
[18:57:21] HSA 2828ms
[18:57:21] DINI 9650ms
[18:57:21] SII 0774ms
[18:57:21] Gewinner Runde 7 -> SII
[18:57:34] HSA 2454ms
[18:57:34] DINI 9724ms
[18:57:34] SII 0806ms
[18:57:34] Gewinner Runde 8 -> SII
[18:57:47] HSA 2526ms
[18:57:47] DINI 9702ms
[18:57:47] SII 0890ms
[18:57:47] Gewinner Runde 9 -> SII
[18:57:47] Siege für HSA 0
[18:57:47] Siege für DINI 0
[18:57:47] Siege für SII 9
[18:57:47] --- Test beendet!
Source:
/*
Timing test
*/
#define FILTERSCRIPT
#include <a_samp>
#include dini
#include hsa
#include SII
#define TEST_RUNS 9
#define TEST_LOOPS 1000
new result[3];
forward StartTest();
public StartTest() {
printf(" --- HSA vs DINI vs SII (%d a %d)",TEST_RUNS,TEST_LOOPS);
for(new i ; i < TEST_RUNS ; i++ )
{
new
tick2,
tick3,
tick1,
tick4;
tick1 = GetTickCount();
for(new j ; j < TEST_LOOPS ; j++)
{
setInt:"Fraktionskassen"("Polizei",81921);
setInt:"Fraktionskassen"("Feuerwehr",56121);
setInt:"Fraktionskassen"("Yakuza",1912);
setInt:"Fraktionskassen"("Lufthansa",917251);
setString:"Fraktionskassen"("Passwort","Ich mag Züge");
setInt:"Fraktionskassen"("Bargeld",4125);
setFloat:"Fraktionskassen"("Leben",74.12);
}
tick2 = GetTickCount();
for(new j ; j < TEST_LOOPS ; j++)
{
if(!dini_Exists("Fraktionskassen")) dini_Create("Fraktionskassen");
dini_IntSet("Fraktionskassen","Polizei",81921);
dini_IntSet("Fraktionskassen","Feuerwehr",56121);
dini_IntSet("Fraktionskassen","Yakuza",1912);
dini_IntSet("Fraktionskassen","Lufthansa",917251);
dini_Set("Fraktionskassen","Passwort","Ich mag Züge");
dini_IntSet("Fraktionskassen","Bargeld",4125);
dini_FloatSet("Fraktionskassen","Leben",74.12);
}
tick3 = GetTickCount();
for(new j ; j < TEST_LOOPS ; j++)
{
INI_Open("Fraktionskassen.ini");
INI_WriteInt("Polizei",81921);
INI_WriteInt("Feuerwehr",56121);
INI_WriteInt("Yakuza",1912);
INI_WriteInt("Lufthansa",917251);
INI_WriteString("Passwort","Ich mag Züge");
INI_WriteInt("Bargeld",4125);
INI_WriteFloat("Leben",74.12);
INI_Save();
INI_Close();
}
tick4 = GetTickCount();
printf("HSA %04dms",tick2 - tick1);
printf("DINI %04dms",tick3 - tick2);
printf("SII %04dms",tick4 - tick3);
new
HSA = tick2 - tick1,
DINI = tick3 - tick2,
SII = tick4 - tick3;
printf("Gewinner Runde %d -> %s",(i+1),(HSA < DINI && HSA < SII) ? ("HSA") : ((DINI < HSA && DINI < SII)?("DINI"):("SII")));
if(HSA < DINI && HSA < SII) result[0]++;
else if(DINI < HSA && DINI < SII) result[1]++;
else result[2]++;
}
printf("Siege für HSA %d",result[0]);
printf("Siege für DINI %d",result[1]);
printf("Siege für SII %d",result[2]);
printf(" --- Test beendet!");
return 1;
}
public OnFilterScriptInit() {
SetTimer("StartTest",1800,false);
return 1;
}
@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...
Das soll jetzt also heißen man kann dini nicht mit HSA vergleichen oder was?
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.
Das ist doch bescheuert.Der Test von BlackAce hat doch eindeutig bewiesen,dass SII selbst schneller ist als HSA.
Der Vergleich mit Bus und Auto hingt auch hinterher. Um es mit Auto und Bus zu vergleichen,streichen wir den Bus.
Wir haben Auto A ( HSA ) und Auto B ( SII ).
Auto A fährt jeden Fahrgast einzelnt zum Ziel. Auto B dagegen fährt alle Gäste zusammen zum Ziel. Auto A wird höchstwahrscheinlich für den Fall von 1 Gast schneller sein. Natürlich ist der 1 Fahrgast deutlich eher dort,als jeder der Gäste von Auto B. Es wird aber niemals der Fall sein,dass Auto B langsamer alle Gäste befördert als Auto A jeden Gast einzelnt .
//Edit:
Dann solltest du aber auch im Startpost hinzufügen,dass der Test nur gilt für das Schreiben von einzelnen Einträgen. Jetzt glauben sowieso schon zu viele,es wäre schneller als SII, was ja nicht unbedingt stimmt. Für einen Sonderfall ist es schneller, nicht für den normalen gebrauch. Denn du weisst sicherlich selber, wie oft speicherst du einen Einzelnen Eintrag ?
Geht ja nicht darum, dass HSA schlecht ist oder langsam ist im allgemein oder sonst was - lediglich die Aussage, dass es schneller als SII ist kommt einfach nicht hin.
Man solllte nur Sachen mit dem gleichen Zielgebiet vergleichen (zB eben HSA und DINI wegen Ein-Zeilen-Speicherung), und nicht HSA mit einem Teil von SII, der in der Form nicht gewollt ist.
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?
@Hauke
Hier das ergebnis.
Viel schneller ist das ja auch nicht.
Aber wer speichert denn die Vars einzelen?
ZitatAlles anzeigen[19:15:52] --- HSA vs DINI vs SII (9 a 1000)
[19:15:57] HSA 0794ms
[19:15:57] DINI 2530ms
[19:15:57] SII 0736ms
[19:15:57] Gewinner Runde 1 -> SII
[19:16:01] HSA 0720ms
[19:16:01] DINI 2568ms
[19:16:01] SII 0725ms
[19:16:01] Gewinner Runde 2 -> HSA
[19:16:05] HSA 0712ms
[19:16:05] DINI 2982ms
[19:16:05] SII 0775ms
[19:16:05] Gewinner Runde 3 -> HSA
[19:16:09] HSA 0713ms
[19:16:09] DINI 2542ms
[19:16:09] SII 0784ms
[19:16:09] Gewinner Runde 4 -> HSA
[19:16:13] HSA 0699ms
[19:16:13] DINI 2472ms
[19:16:13] SII 0718ms
[19:16:13] Gewinner Runde 5 -> HSA
[19:16:17] HSA 0703ms
[19:16:17] DINI 2440ms
[19:16:17] SII 0768ms
[19:16:17] Gewinner Runde 6 -> HSA
[19:16:21] HSA 0718ms
[19:16:21] DINI 2720ms
[19:16:21] SII 0775ms
[19:16:21] Gewinner Runde 7 -> HSA
[19:16:25] HSA 0691ms
[19:16:25] DINI 2508ms
[19:16:25] SII 0789ms
[19:16:25] Gewinner Runde 8 -> HSA
[19:16:29] HSA 0693ms
[19:16:29] DINI 2484ms
[19:16:29] SII 0724ms
[19:16:29] Gewinner Runde 9 -> HSA
[19:16:29] Siege für HSA 8
[19:16:29] Siege für DINI 0
[19:16:29] Siege für SII 1
[19:16:29] --- Test beendet!
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?
Das ließt definitiv der Großteil aller Leute so:
for(new i = 0 ; i < 10 ; i++) {
hsa_write("bla1","irgendwas");
hsa_write("bla2","irgendwas");
...
hsa_write("bla99","irgendwas");
hsa_write("bla100","irgendwas");
}
Steht ja auch dort so :-O!
//Edit:
Bin hier fertig. Hier dreht man sich jetzt sowieso nur noch im Kreis :p.