//! 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.