Profilointi (ohjelmointi)

Kohteesta Wikipedia
Siirry navigaatioon Siirry hakuun

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.[1][2] 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.[3]

Profilointityökaluja[muokkaa | muokkaa wikitekstiä]

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

Tyypillisesti mittaukset suoritukset paljastavat "kuumia kohtia" (engl. hot spot) 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 (engl. trace) tai yhteenvedon (engl. profile) profiloinnista.

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

Linux[muokkaa | muokkaa wikitekstiä]

  • Linux Trace Toolkit
  • OProfile
  • perf[6]

OS X[muokkaa | muokkaa wikitekstiä]

  • Shark

Solaris[muokkaa | muokkaa wikitekstiä]

  • DTrace

AMD[muokkaa | muokkaa wikitekstiä]

IBM[muokkaa | muokkaa wikitekstiä]

  • Rational Purify

Intel[muokkaa | muokkaa wikitekstiä]

  • Intel Advisor

C/C++-kielelle[muokkaa | muokkaa wikitekstiä]

Basic-kielelle[muokkaa | muokkaa wikitekstiä]

  • Gambas (IDEn integroitu profilointityökalu[8])

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html#SEC1 [vanhentunut linkki]
  2. Simon Schubert & Dejan Kostic & Willy Zwaenepoel & Kang G. Shin: Profiling Software for Energy Consumption (PDF) people.kth.se. Viitattu 31.3.2018.
  3. a b Ben Wun: Survey of Software Monitoring and Profiling Tools (PDF) cse.wustl.edu. Viitattu 31.3.2018.
  4. Amitabh Srivastava & Alan Eustace: [http://www.ece.cmu.edu/~ece548/tools/atom/man/wrl_94_2.pdf ATOM: A System for Building Customized Program Analysis Tools] (PDF) maaliskuu 1994. Digital. Viitattu 31.3.2018.
  5. Susan L. Graham & Peter B. Kessler & Marshall K. McKusick: gprof: a Call Graph Execution Profiler (PDF) docs.freebsd.org. Viitattu 31.3.2018.
  6. Vince Weaver: Linux perf event Features and Overhead web.eece.maine.edu. 21.4.2013. Viitattu 25.11.2017.
  7. AMD μProf AMD. Viitattu 31.3.2018.
  8. http://gambas.svn.sourceforge.net/viewvc/gambas?view=revision&revision=4740