dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

C++ Profileris

 
dev.gamez.lv Forum Index -> Tavi projekti
View previous topic :: View next topic  
Author Message
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Wed Jul 14, 2010 1:32 pm    Post subject: C++ Profileris

Dažus gadus atpakaļ biju rakstījis savu C++ profileri, jo esošie neapmierināja (sarežģītības / lieluma ziņā). Sanāca mazs un vienkārši lietojams statisktiks profileris komandrindā.

Varu padalīties, ja kādam tas noder sava koda profilēšanai.

Nesen pieķēros šim klāt nopietnāk un uzrakstīju smuki lietojamu GUI, uzlaboju arī tā lietojamību un fīčas. Tas profilē Visual C/C++ aplikācijas, kurām ir pieejams pdb fails (debug informācija). Jāņem vērā, ka tas ir statisktikas profileris, precīzu funkciju izsaukumu skaiotu tas neparādīts. Tas tikai parādīs funkcijas, kurās programma pavada visvairāk laika (kas man personīgi visbiežāk ir arī vajadzīgs). Taču iemeslu kāpēc būs jādomā pašam. Visādi VTune vai CodeAnalyst, protams, to parāda sīkāk (cache-misses, vai tml), taču man ir gribējies vienkāršu profileri ar minimālistisku interfeisu, kā rezultātā tapa šī programma.

Te pati Windows programma: http://bubu.lv/downloads/Profiler-1.0.7z (strādā gan uz x86, gan x64, taču profilē tikai x86 programmas).
Te sīkāka informācija par fīčām / lietošanu: http://bubu.lv/wiki/Tools/CXXProfiler
Testēts tikai zem Windows 7. Gan jau ka uz Vistas arī ies, bet par XP neko negalvoju.

Skrīnšots:
Back to top
View user's profile Send e-mail
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Wed Jul 14, 2010 3:40 pm    Post subject:

Super, notestēšu zem Server 2008 64bit.

Strādā. Wink
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Wed Jul 14, 2010 5:45 pm    Post subject:

Oho, forši.
Izskatās noderīgs. Smile
Patika, kā izdomāts interfeiss.

Tikai man te daži joki gadījās ar to programmu.
1. Neizdevās palaist programmu no profilera, varēju tikai attach'ot.
2. Kaut kādas problēmas ar Direct3D9 / D3DX debug informāciju - redzu tikai globālas funkcijas un kaut kādus mistiskus gabalus no klasēm (CxImage::`copy constructor closure'), lai gan VS parādīja man arī klašu funkcijas un visu pārējo -- varbūt programma vēl neprot atrast simbolu failus? Nu tad cerams, ka tie tiks atrasti līdz ar assembly koda rādīšanas iespēju.
3. Nestrādāja Open File in Visual Studio. "Open File" atvēra ar studiju. Tāpēc varbūt var pielikt trešo iespēju "Open With..."?
4. Visādas WinAPI funkcijas galā rādīja KiFastSystemCallRet. Gan jau ar simbolu failiem / assembly kodu rādītu visu pareizāk, bet varbūt vēl noderētu iespēja nerādīt closed-source API koda izpildes biežumu tajā kokā.
5. Uzspiedu uz Show DLLs, tad Hide DLLs, tad Filter (nezinu, kurš īsti atrisināja to mazo problēmu), parādījās pilnīgāks saraksts. Kas tur sākumā tika nofiltrēts?

EDIT: 6. Neievēroju iespēju sakārtot pēc atrašanās vietas failā. Man šķiet, ka tas palīdzētu nedaudz labāk orientēties informācijā, neskatoties uzreiz uz source failu, kurš nevar šo informāciju kompakti parādīt.

Screenshots no manas puses:
http://img801.imageshack.us/img801/8929/prof1.jpg - atradu iespēju paātrināt programmu par gandrīz veselu procentu. :D

Testēju uz 32 bitu Windows XP SP3. Viss strādā labi, izņemot augstākminēto.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Wed Jul 14, 2010 11:21 pm    Post subject:

snake5 wrote:
1. Neizdevās palaist programmu no profilera, varēju tikai attach'ot.

Nav gadījumā problēma ar tekošo direktoriju vai kautko tml? Profaileris programmu laiž no viņas exe faila direktorijas.

Quote:
2. Kaut kādas problēmas ar Direct3D9 / D3DX debug informāciju - redzu tikai globālas funkcijas un kaut kādus mistiskus gabalus no klasēm (CxImage::`copy constructor closure'), lai gan VS parādīja man arī klašu funkcijas un visu pārējo -- varbūt programma vēl neprot atrast simbolu failus?

Iespējams. Jāpaskatās kā ir ar citu dll failu debug informāciju, neesmu to padziļināti pētījis. Vēl jau iespējams variants, ka tajā debug informācijā nav vajadzīgās informācijas.

Quote:
3. Nestrādāja Open File in Visual Studio. "Open File" atvēra ar studiju. Tāpēc varbūt var pielikt trešo iespēju "Open With..."?

Kāda studija? Man stipra aizdoma, ka uz Express Editiona tas nestrādās.

Quote:
4. Visādas WinAPI funkcijas galā rādīja KiFastSystemCallRet. Gan jau ar simbolu failiem / assembly kodu rādītu visu pareizāk, bet varbūt vēl noderētu iespēja nerādīt closed-source API koda izpildes biežumu tajā kokā.

Nu te labs jautājums ir - par ko uzskatīt clode-source API. Ja ir debug informācija pieejama, tad šis to rādīs. Source kods var jau arī nebūt pieejams (diska burts mainījies / atmontēts), bet pdb fails blakus exe vai kur citur ir pieejams. Var lietot Hide All, lai tos visus paslēptu.

Quote:
5. Uzspiedu uz Show DLLs, tad Hide DLLs, tad Filter (nezinu, kurš īsti atrisināja to mazo problēmu), parādījās pilnīgāks saraksts. Kas tur sākumā tika nofiltrēts?

Filter ar tukšu stringu dara neko. ShowDLL divreiz uzspiežot nevajadzētu neko mainīt (tā ir ekvivalenta darbība File->Open izsaukšanai). Kas tieši mainījās un kura ir tā "mazā" problēma?

Quote:
EDIT: 6. Neievēroju iespēju sakārtot pēc atrašanās vietas failā. Man šķiet, ka tas palīdzētu nedaudz labāk orientēties informācijā, neskatoties uzreiz uz source failu, kurš nevar šo informāciju kompakti parādīt.

Flat profilā uzspied uz kolonnas, lai sakārto pēc tā faila. Uz jebkuras no kolonnām var spiest, lai to sakārtotu.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Thu Jul 15, 2010 1:23 am    Post subject:

Quote:
Nav gadījumā problēma ar tekošo direktoriju vai kautko tml? Profaileris programmu laiž no viņas exe faila direktorijas.

Es visus savus projektus tā arī kārtoju, ka exe fails ir uzreiz tur, kur tam jābūt.
Quote:
Kāda studija? Man stipra aizdoma, ka uz Express Editiona tas nestrādās.

VS2005, nav Express. Very Happy (Tā vecā options dialoga dēļ uzinstalēju un tā arī nometis neesmu.) Bet tā instalācija nedaudz samocīta (reset'oti settingi, pārnestas projektu/uzstādījumu mapes..), tāpēc vaina varētu būt arī manā pusē.
Quote:
Nu te labs jautājums ir - par ko uzskatīt clode-source API.

Gan jau to pašu "ir pdb, nav sources" variantu. Ja reiz tik izplatīta tā problēma ar nejaušu source failu "atvienošanu", varētu piemest brīdinājuma paziņojumu (abort/retry/ignore with this file stilā), ka pdb ir pie exe faila (nav simbolu mapē, tātad lokālais) un nav sources.
Quote:
Kas tieši mainījās un kura ir tā "mazā" problēma?

Kad otrreiz izmēģināju, redzēju, ka, uzspiežot Filter, palielinās datu apjoms kokā - pienāk klāt dažādi funkciju nosaukumi, kuru tur iepriekš nebija. Nav viņi nepareizi, vienkārši uzreiz pēc profilēšanas vai datu ielādēšanas viņus neparādīja. Tagad atkal izmēģināju Flat Profile skatā -- Filter strādāja tieši tāpat.
EDIT: Izskatās, ka by default nofiltrē tos, kuriem Total ir mazāks par kaut kādu ciparu (varētu būt 10). Vai "Total %"...
Quote:
Flat profilā uzspied uz kolonnas, lai sakārto pēc tā faila.

Ah, ok, neievēroju, ka kārtošana pēc faila arī sakārto pēc atrašanās vietas failā.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Jul 15, 2010 9:06 am    Post subject:

snake5 wrote:
EDIT: Izskatās, ka by default nofiltrē tos, kuriem Total ir mazāks par kaut kādu ciparu (varētu būt 10). Vai "Total %"...

Jā, tā notiek. Tas spinboksis labajā pusē ar skaitli 5 norāda, kurus nerādīt (tiem kam <5 - tos nerāda). Nav jau īsti jēga rādīt tur kaudzi ar simboliem, kuri ir ļoti reti parādījušies call-stekā.
Filter pogai gan nevajadzēja to atcelt, tb tai ir mazāka prioritāte. Šito pastīšos.
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Tavi projekti All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group