Intro to Profiling - raisercostin/software-wiki GitHub Wiki

Profiling is the only way you should make performance optimizations. As you remember "premature optimization is the root of all evil" so don't do this till you don't have a working solution that exhibits performance problems.

See also Intro To Performance

Performance is a catch all term for a lot of things among:

  • Time: Fast/Slow
  • Memory footprint: Big/Small
  • Threads: Many/Few/One
  • IO
    • network
    • storage

Best practices

  • Two types of analysis
    • instrumentation - you need to filter out methods/packages/libraries that are called a lot of times otherwise this will impact any conclusion
    • sampling - you don't see the actual number of calls and each time duration but an aggregated sampled effort: timePerCall*calls

Tools

Resources