Jump to content

návod [Benchmark] Rychlost dini


Recommended Posts

Kod test scriptu:

Spoiler


#include <a_samp>
#include <dini>



public OnFilterScriptInit() {
	SetTimer(#TestSpeed, 10000, false);
	return 1;
}

const Iterations = 10000;

forward TestSpeed();
public TestSpeed() {
	printf("Iterations = %i", Iterations);

	new start, end, str[128], File:f;
	start = GetTickCount();
	f = fopen("speedTest1.ini", io_write);
	for(new i=0; i<Iterations; ++i) {
		format(str, sizeof(str), "polozka%03i=%i\r\n", i, i);
		fwrite(f, str);
	}
	fclose(f);
	end = GetTickCount();
	printf("Test1 = %i", end - start);
	
	start = GetTickCount();
	dini_Create("speedTest3.ini");
	for(new i=0; i<Iterations; ++i) {
		format(str, sizeof(str), "polozka%03i", i, i);
		dini_IntSet("speedTest3.ini", str, i);
	}
	end = GetTickCount();
	printf("Test3 = %i", end - start);
	
	start = GetTickCount();
	for(new j=0; j<Iterations; ++j) {
		f = fopen("speedTest2.ini", io_write);
		for(new i=0; i<1000; ++i) {
			format(str, sizeof(str), "polozka%03i=%i\r\n", i, i);
			fwrite(f, str);
		}
		fclose(f);
	}
	end = GetTickCount();
	printf("Test2 = %i", end - start);

	return 1;
}

 

Vysledky na linuxe (Fakaheda):

[16/04/2018 08:17:12] Iterations = 10000
[16/04/2018 08:17:12] Test1 = 6
[16/04/2018 08:18:43] Test3 = 91067
[16/04/2018 08:18:49] Test2 = 6142

 

Vysledky Linux (~no i/o):

[16/04/2018 09:24:32] Iterations = 10000
[16/04/2018 09:24:32] Test1 = 2
[16/04/2018 09:25:08] Test3 = 36002
[16/04/2018 09:25:10] Test2 = 2344

 

Vysledky na Windowse (HDD):

[08:19:12] Iterations = 10000
[08:19:12] Test1 = 35
[08:27:49] Test3 = 516449
[08:28:23] Test2 = 34184

 

Vysledky Windows (SSD):
[08:32:43] Test1 = 44
[08:40:00] Test3 = 437791
[08:40:35] Test2 = 34545

 

Vysledky Windows (RAM disk):

[08:47:06] Iterations = 10000
[08:47:06] Test1 = 35
[08:54:27] Test3 = 440681
[08:55:00] Test2 = 32862

 

Vysledky windows (~no i/o):

[09:19:56] Test1 = 15
[09:21:46] Test3 = 110336
[09:21:49] Test2 = 3381

 

Vysledky Windows (Len overhead testu):
[09:12:35] Test1 = 3
[09:12:35] Test3 = 3
[09:12:38] Test2 = 2926

 

Edited by xhunterx
Link to comment
Share on other sites

A este realnejsi test na 100 iteracii na Linuxe:
[16/04/2018 09:43:38] Iterations = 100
[16/04/2018 09:43:38] Test1 = 0
[16/04/2018 09:43:40] Test3 = 1722
[16/04/2018 09:43:40] Test2 = 61

 

Vidime, ze dini zabere 1.7 sekundy, co je teda lag jak svina pre server.

Link to comment
Share on other sites

BTW, kedze to s tym 100 iteraciami mi nesedelo s teoriou, spustil som ten test este raz na FH a dostal dost iny vysledok:
[16/04/2018 09:45:50] Iterations = 10000
[16/04/2018 09:45:50] Test1 = 6
[16/04/2018 09:48:48] Test3 = 177875
[16/04/2018 09:48:54] Test2 = 6665

V podstate asi ide o to, ze na zdielanom hoste zalezi aj od toho co robia ine servery. Toto sedi s teoriou, ze 10x viac iteracii sa rovna 100x vacsiemu casu, alebo inak povedane skaluje to ako n^2

Link to comment
Share on other sites

Vůbec nechápu, proč tu stále pár lidí včetně tebe řeší DINI. Je to jeden z nejstarších includes, tak je logické, že to s rychlostí nebude žádná sláva. Hlavně nějaká rychlost je pro většinu uživatelů tak nepodstatná, že bych se tím ani nezaobíral. Ať si každý používá co chce a s čím se mu pěkně pracuje. 

Link to comment
Share on other sites

před 3 hodinami, Woody said:

Vůbec nechápu, proč tu stále pár lidí včetně tebe řeší DINI. Je to jeden z nejstarších includes, tak je logické, že to s rychlostí nebude žádná sláva.

No praveze to Joh Asakura popieral v chate, ze to neni podstatne. A uprimne, mal dobru pointu o cache. Preto som to testoval.

před 3 hodinami, Woody said:

Hlavně nějaká rychlost je pro většinu uživatelů tak nepodstatná

Praveze to je pointa, 1.7 sekundy lag nieje nepodstatny. A ano, 100 riadkov je mozno prehnane na bezny mod, ale aj u 50 to vychadza 0.4 sekundy, coz pre PvP servery tiez nieje slava.

Edited by xhunterx
Link to comment
Share on other sites

  • Hlavní moderátor

Nechtěl bys – samozřejmě pokud máš čas – udělat benchmark i na další dva nejpoužívanější systémy, DOF2 a Y_INI? Že bys z toho udělal obecný přehled pro nejpoužívanější souborové systémy.

Link to comment
Share on other sites

  • Hlavní moderátor
před 7 hodinami, Tanga said:

A pointa?

Resp. prečo je to v návodoch?

Pro podobná témata nemáme kategorii a v Pawn sekci to nejlépe zapadá do návodů (taky ses tím něčemu přiučil :doge:), tak to necháme tady.

P.S. Jistě by to šlo dát do fóra Všechno možné, ale tam by to zanedlouho zapadlo a tematicky se to hodí více sem.

Link to comment
Share on other sites

před 44 minutami, vEnd said:

Pro podobná témata nemáme kategorii a v Pawn sekci to nejlépe zapadá do návodů (taky ses tím něčemu přiučil :doge:), tak to necháme tady.

P.S. Jistě by to šlo dát do fóra Všechno možné, ale tam by to zanedlouho zapadlo a tematicky se to hodí více sem.

Ono mozno by si mohol napr v navodoch spravit zvlast sekciu, nieco ako: Technicke Informacie. Alebo take nieco. Proste nie navod ale skorej Dokumentacia.

před 46 minutami, vEnd said:

Nechtěl bys – samozřejmě pokud máš čas – udělat benchmark i na další dva nejpoužívanější systémy, DOF2 a Y_INI? Že bys z toho udělal obecný přehled pro nejpoužívanější souborové systémy.

Uprimne, ja sa v DOF2 a y_ini moc nevyznam, ja som preskocil v podstate hned na SQLite, takze nechcem robit moc nieco, v com sa nevyznam. Aby som to nepouzil nejakym blbym sposobom alebo tak.

Edited by xhunterx
Link to comment
Share on other sites

  • Hlavní moderátor
před 1 hodinou, xhunterx said:

Ono mozno by si mohol napr v navodoch spravit zvlast sekciu, nieco ako: Technicke Informacie. Alebo take nieco. Proste nie navod ale skorej Dokumentacia.

Ono je také otázkou, zda má smysl zakládat novou sekci jen kvůli jednomu dvěma tématům, co se takovému typu témat věnují.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...