Mark-Jason†Dominus, Plover Systems Co.
Date: Monday, July 07
Time:†8:45am - 12:15pm
Almost every application must be made to run faster; some sooner, some later. Performance tuning of applications has long been a dark art, understood by few and riddled with terrible pitfalls. Stories abound of optimization projects that took weeks but yielded a pathetic 2% decrease in total run time. Don't let this happen to you.
Dominusí class begins with a brief introduction to the basic concepts of performance tuning. We'll then take an extensive look at modules for benchmarking and profiling, including several common blunders that even experts commit when benchmarking. We'll finish with a discussion of a few of the most important optimizations.
Throughout, the class will emphasize both high- and low-level approaches to performance tuning: when to tune and when to try something different, and if tuning is necessary, how to focus your efforts where they will do the most good. We'll learn how to rationally evaluate programming situations and when to try alternative approaches.
Basic concepts and tools: CPU, wallclock, system, and user times
I/O, CPU, and memory-bound programs
'time,' 'times,' Time::HiRes
Performance tuning tools:
Benchmarking: the cardinal rule of benchmarking (look at the big picture)
Common errors of commission and interpretation
The incredible shrinking test case
When two optimizations look like zero
The pseudo-hash disaster
Case studies: Speeding up regexes, numerical calculation.
The 90-10 rule
The Wrong Question
The Innermost Loop
Speeding up the case that never occurs
Standard profiling modules
Case study: high-turnaround XML processing.
When common optimizations don't work.