Profilointi (ohjelmointi)

Profilointi tarkoittaa ohjelmointiterminä menetelmää, jossa profilointityökalu analysoi ohjelmaa suorituksen aikana samalla tallentaen sen muistin kulutusta, suorituskykyä ja niin edelleen. Näin saadaan selville esimerkiksi mahdollisia pullonkauloja, virheitä, ylimääräistä virran ja muistin kulutusta ohjelmasta.http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html#SEC1  Profiloinnin lisäksi tai vaihtoehtona sille voidaan tehdä staattista analyysiä.

Amdahlin lain mukaan nopeiden ja tehokkaiden ohjelmien kehittämisessä on keskityttävä ohjelman kalleimpaan (raskaimpaan) kohtaan.

 Profilointityökaluja 
Profilointityökalut voivat toimia eri periaatteilla kuten suorituksen mittauksilla, simuloimalla ja instrumentoimalla. Instrumentoinnilla tarkoitetaan ohjelman muokkaamista lisäämällä siihen itseensä laskureita. Profilointi voi käyttää mittauksiin laskureita kuten funktiokutsujen laskureita tai aikaperusteisia mittauksia.

Tyypillisesti mittaukset suoritukset paljastavat "kuumia kohtia" () kahdella tavalla: paikkoja, joita kutsutaan usein, sekä paikkoja, joissa vietetään paljon suoritusaikaa. Molemmissa tapauksissa on arvioitava erikseen onko koodin suoritusta muutettava, muutettava kutsukohtia vai onko suoritus normaalia maksimikapasiteetin hyödyntämistä. Profilointiohjelmat voivat tallettaa kerätyn tapahtumajoukon () tai yhteenvedon () profiloinnista.

Myös niin kutsuttuja "kylmiä kohtia" () joissa ohjelma ei tee mitään voidaan löytää profiloinnilla mittaamalla käytettyä kokonaisaikaa suoritusajan sijaan.

Alustasta riippuen myös laitteistotason laskureita voi olla mahdollista käyttää profilointiin.

 Linux 
 Linux Trace Toolkit
 OProfile – järjestelmätason profilointi
 perf – ohjelmatason profilointi

 OS X 
 Shark

 Solaris 
 DTrace

 AMD 
 AMD uProf
 AMD CodeAnalyst
 CodeXL

 IBM 
 Rational Purify

 Intel 
 Intel Advisor

 C/C++-kielelle 
 GNU gprof
 Valgrind

 Basic-kielelle 
 Gambas (IDEn integroitu profilointityökaluhttp://gambas.svn.sourceforge.net/viewvc/gambas?view=revision&revision=4740)

 Katso myös 
 Ohjelman optimointi

 Lähteet 

Luokka:Profilointityökalut