A plugin számolja hogy egyes funkciók hányszor lettek meghívva, és mennyi idõt vesz igénybe végrehajtásuk.
Ezt az információt elmenti HTML táblázatként melyet megnézhetünk bármelyik modern böngészõvel.
Ha azt szeretnéd hogy a profilozza a szkripted, másold a teljes nevét <server>/plugins/profiler.cfg, pl.:
Ha a script szerepel ezen a listán akkor betöltésre kerül és automatikusan profilozásra kerül.
A profilozó adatokat gyûjt míg a szkript véget nem ér, vagy be nem zárod a szervert vagy /gmx vagy /unloadfs parancsot nem használod.
Amikor ez megtörténik, minden adat mentésre kerül HTML fájlként oda ahol a profilozott szkript található, vagyis azonos könyvtárba.
Ha filterscript van profilozva akkor az adatokat a <server>/filterscripts mappába menti ha gamemode akkor a <server>/gamemodes mappába menti.
A kimeneti fájl neve megegyezik a betöltött fájl nevével, csak kap egy .prof kiterjesztést (pl.: lvdm.amx.prof), melyet megnézhetünk kedvenc böngészõnkkel.
Hát én személy szerint bánom hogy eltüntette ebben a kiadásban a nativ funkciókat de azért így is remek plugin.
Profiler plugin 1.5 és 1.4 verzió A plugin nevébõl eredõen ez egy teljesítmény profilozó kimutató kiegészítõ,
mely futás közben elemez egy adott kódsorozatot (pl.: OnPlayerConnect alatt mindent) melyben elhelyezzük az utasításait, majd mentést készít az eredményrõl fájlként.
Részletesebb információ:
A plugin a Profiler_Start(); funkciótól kezdve számolja és méri hogy a kódsorozatban a függvények (pl.: SendClientMessage | GetPlayerName | GetPlayerPos | stb) hányszor kerülnek meghívásra és a végrehajtás feladata mennyi idõt vesz igénybe.
Egészen addig míg a Profiler_Stop(); utasítást meg nem kapja.
Ezután ki írathatjuk az eredményt egy eljárás egyszeri meghívásának idõszükséglete szerint sorba rendezve a következõ
[pawn]
Profiler_PrintStats(\"profiler1_5.html\", PROFILER_ORDER_BY_TIME);
[/pawn]
utasítással, ami létrehoz egy profiler1_5.html fájlt, melyet bármelyik böngészõ segítségével megtekinthetünk.
Majd ajánlott az eredmények nullázása közvetlenül a
[pawn]
native Profiler_ResetStats();
[/pawn]
utasítással, de ezt leleményesebb scripterek kitudják használni hogy többszöri ellenõrzés eredményének össze vonása legyen kiíratva akár mindig más fájlba.( jelenleg felülírásra kerül a fájlban az eredmény )
Hivatalos oldal:
http://forum.sa-mp.com/showthread.php?t=271129Innen tölthetõ le minden egyes részlete:
https://github.com/Zeex/profiler/archives/master\'>
https://github.com/Zeex/profiler/archives/master
Eljárások:
[pawn]
// Mérési eredmény rendezésének típusai
enum ProfilerStatsOrder {
PROFILER_ORDER_NONE, // Nincs rendezés (talán meghívási sorrendben írja ki)
PROFILER_ORDER_BY_CALLS, // Eljárások meghívás számával rendezi (hány szor lett meghívva míg az idõszükséglet mérés történik)
PROFILER_ORDER_BY_TIME, // Eljárások idõ igénye szerint rendezi
PROFILER_ORDER_BY_TIME_PER_CALL // Összesített idõ szerint rendezi sorba
};
// Ahhoz hogy a profilozó megtudja vizsgálni amx fájlunkat meg kell adni számára a nevüket.
// pl.: \"gamemodes/mygamemode.amx\" vagy filterscripts/myfilterscript.amx\"
native Profiler_Init(const path_to_amx[]);
// Elemzés kezdete.
native Profiler_Start();
// Elemzés vége.
native Profiler_Stop();
// Eredmények mentése fájlként.
// Megjegyzés: addig ne készítsünk mentést míg az elemzés folyik!
// Röviden a pawn kódunkban ne helyezzük a Profiler_Start() és a Profiler_Stop() utasítás közé csak a végére helyezhetjük el, ezt az utasítás!
native Profiler_PrintStats(const filename[], ProfilerStatsOrder:order);
// Statisztika törlése mellyel megszabhatjuk egy kis logika szerint hány ismétlõdés után törölje az eredményeket, ez eddig automatikus volt minden egyes Profiler_Start meghívásakor.
native Profiler_ResetStats();
[/pawn]
Használat:Töltsük le a plugint csomagoljuk ki tartalmát pawno/include mappába profiler.inc-t, a plugins mappába op rendszernek megfelelõen profiler.dll (Windows) profiler.so (Linux).
Majd illesszük be OnGameModeInit vagy OnFilterscritpInit alá annak az amx fájlnak a nevét melyet elemezni kívánunk, a következõ módon:
[pawn]
#include <a_samp>
#include <profiler>
public OnGameModeInit()
{
Profiler_Init(\"gamemodes/mygamemode.amx\");
return 1;
}
public OnPlayerConnect(playerid)
{
Profiler_Start(); // Elemzés kezdete
SendClientMessage(playerid, -1, \"Hello\");
printf(\"teszt script\");
Profiler_Stop(); // Elemzés vége
Profiler_PrintStats(\"profiler.html\"); // Eredmények mentése profiler.html fájlba
Profiler_ResetStats();
return 1;
}
[/pawn]
Legjobb ha mindent abba a .pwn-be illesztünk amiben szeretnénk elemezni egy adott funkciót.
Képet lehet találni a hivatalos fórumon milyen eredményt kaphatunk módunkról, melyben a vizsgálat idõtartama alatt kapott eredményben kiírásra kerülnek:
Function | Calls | Time per call | Overall time | Overall time, %[/quote]
meghívott eljárások nevei | ismétlõdések száma | egy meghívás ideje | összesített idõ | összesített idõ százalékos eredménye.
A leírás 1.4-es verziójú plugin kiadásakor készült!
A leírás kiegészítve az 1.5-es verzió pluginhoz.
Az ismertetõ kiegészítve plugin 2.0a2 verzióval.