Perl Training Logo: Praying Mantis
MJD Perl Course - 15th of May 2003

Making Programs Faster:
Benchmarking, Profiling, and Performance Tuning

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 optimizations.

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 alternative approaches.

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; numerical calculation.

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 processing.

Common optimizations. When common optimizations don't work.

Back to "MJD in Israel"