Skip to content

Latest commit

 

History

History
47 lines (33 loc) · 1.94 KB

O42.org

File metadata and controls

47 lines (33 loc) · 1.94 KB

O42: Profilering och optimering 1/3

Observera att dessa mål passar särskilt bra under projektet.

“Premature optimisation is the root of all evil” är ett citat från Donald Knuth. Ett delmål i denna kurs är att lära sig att använda tillämpliga verktyg för att förstå ett programs beteende under körning med avseende på prestanda, dvs. efter att programmet är implementerat ta fram det data som sedan krävs för att göra en faktisk optimering.

Lämpligen tar du fram vilka delar av programmet som tar längst tid att köra respektive körs flest gånger. Några frågor att besvara:

  • Vad är lämplig granularitetsnivå på “delarna” som nämns ovan – och varför?
  • Hur tar du fram detta data?
  • Hur vet du att datat är “rätt”?
  • Hur kan du använda datat?

Observera att det är dumt att profilera ett grafiskt program typ lagerhanteraren eftersom 99% av körtiden är väntan på I/O. Däremot kan man profilera delar av lagerhanteraren. Ta insättning i det binära sökträdet som ett exempel. Skriv ett litet program som använder samma binära sökträd och gör 1 miljon insättning av varor i databasen och sedan 1 miljon sökningar. Det är mer intressant att profilera.

Profilera ett C-program

Man kan använda verktyget gprof för att mäta körtiden hos ett C-program. Det finns flera tutorials på näten, t.ex. denna: http://www.thegeekstuff.com/2012/08/gprof-tutorial/.

Profilera ett Java-program

Se t.ex. denna screencast.


Report a bug on this achievement? Please place an issue on GitHub.