Profiler
FLORES Profiler je profilovací nástroj, který je schopen měřit čas některých vybraných metod. Je určen především servisním konzultantům servisní sítě výrobce a vývojářům. Nástroj je možné spustit klávesovou zkratkou Ctrl+Alt+Shift+F12. Profiler je taktéž k dispozici v okně otevřeného rozhranní.
Nástroj je možné spustit klávesovou zkratkou Ctrl+Alt+Shift+F12. Profiler je taktéž k dispozici v okně otevřeného rozhranní.
Příklad vzhledu profileru
Je určen především servisním konzultantům servisní sítě výrobce a vývojářům.
Příkladem využití může být např. situace, kdy je potřeba odhalit, proč je u konkrétního klienta pomalá skladová uzávěrka apod.
V horní liště nástroje je k dispozici několik funkcí:
| Název | popis |
|---|---|
| Start/Stop |
Pomocí funkce Start, resp. Stop uživatel spustí, resp. zastaví profilování. Profilování je inkrementální a dokud se neprovede zobrazení naměřených statistik pak se naměřené časy sčítají. Profilování lze také spustit při startu systému IS FLORES pomocí parametru spuštění ProfilingAutoStart. Měření musí začít a skončit ve stejném bodě. Pokud tedy např. chceme změřit jak dlouho trvá tisk reportu, je třeba začít měření buď v agendě a vrátit se zpět do téže agendy nebo začít měření v malém číselníku tiskových sestav a po tisku se vrátit zpět do téhož malého číselníku (tiskneme přes funkci preview pomocí zkratky Ctrl+P). V opačném případě zobrazí Profiler chybu "list index out of bounds". Dočasná data si profiler nejdříve zapisuje do paměti a po překročení výrobcem dané hranice (která není velká) se data přepíší do dočasného souboru na disk a paměť se uvolní pro další zápis. Tudíž je možné profilovat i operace, které generují větší množství dat, aniž by došlo ke kolizi díky zaplnění paměti. |
| Show statistics | Provede export statistik naměřených časů, tj. dojde k jejich zobrazení. Zároveň se tím také vynuluje vnitřní počítadlo a při opětovném spuštění profilování se počítá od nuly. |
| Load... | Umožňuje načíst naměřené statistiky ze souboru s příponou *.ap. |
| Save... | Umožňuje uložit naměřené statistiky do souboru s příponou *.ap. |
Nástroj zobrazuje seznam metod, resp. jejich skupin a případně i informace o voláních. Vše je rozděleno podle vláken, mezi kterými se je možné přepínat v panelu Threads.
Nad každým oknem s naměřenými statistikami je možné stiskem pravého tlačítka myši vyvolat lokální nabídku a výsledek zkopírovat do schránky nebo uložit do souboru ve formátu CSV.
| Název | popis |
|---|---|
| Group By Area, Class, Method | Pohled seskupinovaný dle oblastí, tříd a metod. V tomto pohledu je zobrazen také detail volání, pokud je k dispozici. Jedná se o určité užitečné části kódu, např. SQL dotazy. |
| Group By Area, Method | Pohled seskupinovaný dle oblastí a metod. |
| Group By Area | Pohled seskupinovaný dle oblastí. |
| Callers | Zobrazí okno s nadřazenými volajícími, které volají aktuální řádek. |
| Children Calls | Zobrazí okno vnořených volání, které volá aktuální řádek. Při pokliku na řádek vnořeného volání se kurzor označí toto vnořené volání v hlavním seznamu. |
| tbPrevMethod | Funkce zatím není k dispozici. |
| tbNextMethod | Funkce zatím není k dispozici. |
| Název | popis |
|---|---|
| method |
Název metody. Prefix před jejím názvem označuje oblast, do které metoda patří. Tyto oblasti jsou nadefinované interně a umožňují snazší orientaci mezi metodami. Oblasti jsou odlišené barvou. Výčet oblastí je následující:
Při vyhledávání problémů je vhodné se nejprve zaměřit na oblast E, která by neměla vůbec nastávat, dále SCR, SG, UF a efektivitu SQL dotazů. |
| w/children | Celkový čas v sekundách s vnořenými voláními. Jedná se o součin sloupců calls a avg. Uživatel typicky seřadí seznam dle hodnot ve sloupci w/children a postupuje podle nejdelších časů. Podezřelé bývají např. ty části kódu, které se volají často a trvají dlouho. |
| wo/children | Čas v sekundách bez vnořených volání. Jde o nepokryté oblasti, kterých by v budoucích verzích mělo ubývat. |
| calls | Počet volání. |
| min | Nejkratší naměřené volání. |
| max | Nejdelší naměřené volání. |
| avg | Průměrný čas volání. |
Hodnoty lze řadit poklikem myši na záhlaví sloupce.
Profilovat je možné také výkon Web API. Funkcionalita je k dispozici ve verzi IS FLORES 20.0.3 a novějších.
Základní princip:
- Nejprve je zapotřebí odeslat přes Web API speciální požadavek na zahájení profilování.
- Následně zasíláte běžné požadavky, jejichž časovou náročnost chcete změřit.
- Nakonec zašlete další speciální požadavek na ukončení profilování...
- ...a ještě jeden speciální požadavek pro získání souboru s výsledky.
- Získaný soubor (s příponou .ap) je možné načíst do nástroje Profiler a podrobit analýze (zjistit časy provádění volaných metod souvisejících s jednotlivými požadavky).
| Funkce | Požadavek a výsledek zpracování |
|---|---|
| Zjištění aktuálního stavu |
Výsledek zpracování požadavku: Status: 200 OK
Mohou nastat dvě možnosti: true = profilování je spuštěno, false = profilování není spuštěno. |
| Spuštění profilování |
Výsledek zpracování požadavku: Status: 200 OK
|
| Ukončení profilování |
Výsledek zpracování požadavku: Status: 200 OK
|
| Získání profilovacího souboru |
nebo
Výsledek zpracování požadavku: Status: 200 OK + soubor pro import do nástroje Profiler (binární data). Pokud nejsou k dispozici žádná data, která by bylo možné stáhnout (například profilování bylo zahájeno, ale dosud nebylo ukončeno), vrátí se status 406 Not Acceptable. |
URL pro práci s profilováním neobsahuje specifikaci spojení.
Profilování je možné provádět pouze za předpokladu jediné spuštěné instance Web API workeru. V případě, že je spuštěno více instancí, může se stát, že jedna instance obdrží příkaz ke spuštění profilování a druhá k jeho zastavení.
Případně je možné spouštět/ukončovat proces profilování a následně zasílat požadavky určené k profilování přímo proti instanci Web API workera spuštěného ručně výhradně pro účely tohoto testování.