Making Programs Faster:
Benchmarking, Profiling, and Performance
This is a new tutorial, Mark is going to give at The Perl Conference
(TPC) this year. You can be the first to hear this tutorial even
before Larry Wall.
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.
The class will begin with a brief introduction to the basic
concepts of performance tuning. We'll then take an extensive
look at modules for benchmarking and profiling and see several
common blunders that even experts commit when benchmarking.
We'll finish with a discussion of a few of the most important
Throughout, the class will emphasize both high- and low-level
approaches to performance tuning: when to tune and when to try
something different; 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
Short introduction: 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). Benchmark.pm. 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;
Profiling. 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
Common optimizations. When common optimizations don't work.
Back to "MJD in Israel"