• Nie Znaleziono Wyników

//! allo mem //!... }

inline void* operator new[℄ (size_t size) {

//! allo mem //!... }

#endif

Listing6.6-3-Zmodykowanedeni je operatoranew

Popowy»szy hmodyka ja hwywoªanieoperatoranewbezdodatkowy h parametrów:

CObje t *pObje t = new CObje t();

Listing6.6-3-Aloka jaobiektuklasyCobje tprzyu»y iu zmodykowa-negooperatoranew

dla zdeniowanej staªej LEAK_TRACEspowodujewywoªanie wersji newz wª¡- zonym ±ledzeniemwy ieków. W prze iwnym wypadku u»yte zostanie stan-dardowenew.

6.7 Proler

Prolertonarzdziesªu»¡ edoanalizykodupodwzgldemszybko± ijego wy-konania.Zapomo ¡proleradokonujesianalizydynami znej- zyliw tra-k ie wykonywaniasiprogramu.Jest tobardzo wa»ne narzdzie,sz zególnie wprogramowaniugierlubinny haplika ji,którewykonuj¡siw zasie rze zy-wistym, aszybko±¢i hdziaªaniawpªywabezpo±rednionajako±¢.Zapomo ¡ proleraprogramistamo»ezorientowa¢si,ile zasuwykonuj¡si posz zegól-ne elementy programu. Wikszo±¢prolerów mierzy zstotliwo±¢ oraz zas trwania posz zególny h funk ji, o umo»liwia programi± ie zorientowa¢ si, które z± iprogramumaj¡zna z¡ ywpªywna zaswykonywaniakodu.Na podstawiety h dany h mo»nazde ydowa¢ si,którefragmentykodu wyma-gaj¡optymaliza ji.Wkodziezazwy zajznajduj¡sitakzwanew¡skiegardªa, zylifragmentykodu,który hwykonaniejestzde ydowaniedªu»szeni»

pozo-wykrywaniekolizjiorazopera jema ierzowe.Empiry zniezostaªo dowiedzio-ne,»e woptymaliza jikodumo»nastosowa¢zasadPareto,któraw przypa-dkuprogramowaniamówi,»e10%objto± ikodujestodpowiedzialneza90% zasuwykonywania.Irze zywi± ie,fragmentykoduodpowiedzialneza rende-ring zywykrywaniekolizjis¡ bardzokrótkiewstosunkudo aªegoprojektu -ato onemaj¡zazwy zajnajwikszywpªywnaszybko±¢dziaªania.Pod zas optymaliza jinale»ysiskupia¢rze zywi± ienaty hfragmenta hkodu, któ-remaj¡ zna z¡ ywpªywna rezultatoptymaliza ji. Przesadneoptymaliza je mog¡nie±¢zasob¡szeregproblemów:

Kodmo»eprzesta¢by¢multiplatformowy.

Kodmo»estra i¢na zytelno± i.

Optymaliza jemog¡zasob¡po i¡gn¡¢komplika jealgorytmów, o zwik-szamo»liwo±¢wyst¡pieniabªdówiutrudniazarz¡dzaniekodem.

Optymaliza jepodwzgldem zasudziaªaniaprogramuprawiezawsze ma-j¡skutekubo zny,polegaj¡ ynawikszymzapotrzebowaniualgorytmuna pami¢opera yjn¡.

O zywi± ienies¡topowody,dlaktóry hpowinnosizanie ha¢optymaliza ji, le zwartojemie¢nauwadzeiwzwi¡zkuztymoptymalizowa¢tylkote frag-menty,któremaj¡zna z¡ ywpªywnaprdko±¢dziaªaniakodu.

Prolerymo»napodzieli¢nadwiegrupy:

Prolery,którezewzgldunasposóbdziaªaniawymagaj¡wkompilowania spe jalny h instruk ji sªu»¡ y h dozbierania dany h. Wadamitegotypu narzdzis¡konie zno±¢modykowaniakoduprogramuorazfakt,»ewersja doprolowaniajest wolniejsza ni» wersjanalna programu. Zaletami s¡ prostotarozwi¡zaniaorazdokªadnedaneproluj¡ e.Dodatkoweinstruk je mog¡zosta¢wprowadzanenawielesposobów:manualnieprzez programi-st,dodanedo¹ródeªprzezspe jalnenarzdzie,przezkompilatornaetapie kompila ji,dodanedoplikówbinarny hprzezspe jalnenarzdzie,dodane dopliku wynikowego przed uru homieniem orazprzez modyka j kodu wykonywanegowlo ie.

Prolery,którezbieraj¡próbkidany hperiody znie,awynikopierasina podstawiestatystyki.Próbkidany hzbieranes¡wstaªy hodstpa h zasu wopar iuoprzerwaniasystemowe.Dokªadno±¢wynikówzale»yod zsto-tliwo± i próbkowania,którama wpªyw o zywi± ie na prdko±¢ dziaªania programu.

Poni»ejwymieniononaj z± iej stosowaneprolery:

Intel VTune Amplier - proleropra owanyprzez rm Intel. Sªu»y doanalizykoduprzezna zonegonapro esorytejrmyorazkompatybilne znimi(peªnafunk jonalno±¢wystpujetylkodlapro esorówIntel).

Prze-Rysunek6.2.ProlerShark-danewposta itabeli

orazLinux. Abykorzysta¢zprolerawystar zyjedynie program skompi-lowa¢zapomo ¡dowolnegokompilatorazodpowiednimidanymi debugo-wymi(symbolami).Programposiadabardzo wiele narzdzi umo»liwiaj¡- y hwygodn¡analizzebrany hdany h,któreprzedstawiones¡wizualnie zapomo ¡grafów,wykresówitd.

AMD Codeanalyst - prolerrmyAMD sªu»¡ y do analiz kodu uru- hamianego napro esora h tej rmy. Pra uje w systemie Windows oraz Linux.Prolerten,takjakpoprzedniniewymaga»adny hzmianwkodzie aniplikubinarnym-analizowanyprogrammusijedyniezawiera¢ wkompi-lowanesymbole.Prolermo»edziaªa¢jakosamodzielnaaplika jalub zos-ta¢zintegrowanyze±rodowiskiemMi rosoftVisualStudio.Wynikianalizy prezentowanewposta igra znej.AMDCodeanalystjestdarmowy.

GNU proler gprof -to darmowyproler przezna znydo programów skompilowany hzapomo ¡kompilatoraGCC. Wymagaspe jalnie skom-pilowanegoprogramu(g zop j¡-pg).Daneprezentowanes¡wposta i testowej.Dostpnywewszystki hsystema hopera yjny h,naktóry h wy-stpujeg .Wprzypadkusystemu Linuxmo»naskorzysta¢zdarmowego narzdziaKprof,którewy±wietladanewbardziejprzejrzystyminterfejsie okienkowym.

Shark-prolerprzezna zonydoanalizyprogramównapisany hdla syste-muMa OSX. Jeston zintegrowanyze ±rodowiskiem programisty znym XCode. Dane zanalizy prezentowane s¡ w formie gra znej. ‘rodowisko XCode wyposa»one jestponadto wdodatkowyproler- OpenGL Profi-ler,któryumo»liwiaprolowaniekodunapro esorzegra znym. Narz-dzietoopró zanalizypodwzgldem zasupozwalapodgl¡da¢bufory urz¡-dzeniagra znegowdowolnym momen ierenderingu.

Sleepy,VerySleepy-darmowe,otwarteprolerypodsystemWindows. Doanalizykoduwymagaj¡standardowy hinforma jidebugowy h.Dane prezentowanewinterfejsiegra znym.

Powiązane dokumenty