Goals and means of performance evaluation. What to measure. Metrics.
How to measure - theory. Profiling, tracing, events. Timers, counters. Instrumentation. Frameworks overview.
How to process data - statistical tools. Means, variance, distributions. Alternatives, confidence intervals, statistical tests.
Graphical data presentation. Data analysis, reading plots.
Simulation. Modeling.
Are efficient algorithms enough for writing fast code? And if not, what else?
The speed of a program is as important as its function. However, unlike function, speed is the result of often surprising interactions across the entire system stack. This course helps understand what influences program speed and the speed should be measured, evaluated and presented.
Apart from general guidelines, the course will visit many system details relevant to performance and introduce tools that help in software performance evaluation.