1. Making Programs Faster
3. Performance Tuning is Hard
5. Schwartzian Transform
9. Time
10. [B[user time]B] + [R[system time]R] = [V[CPU time]V]
11. "Optimizations"
13. "But I want a pony!"
14. "Optimizations"
15. Wallclock Time
19. I/O Bound Programs
21. CPU Bound Programs
22. Memory Bound Programs
24. Simple Measurement Tools
25. time()
26. Time::HiRes
27. times()
28. Simple Benchmarker
30. Benchmark.pm
33. The Uncertainty Principle
35. Performance Tuning Plan

36. Profilers
39. Sample Program: Mail Folder Analyzer
41. Devel::DProf
42. The 90-10 Rule
43. Devel::DProf
44. Mail::Header
45. handle_message
46. Differences
49. Mail Folder Analyzer Revisited
51. When It's Time to Give Up
52. The Big Picture

54. POD Formatting
56. perldoc
57. pod2man
58. parse_text
59. Pod::ParseTree::append
64. parse_text
72. The Moment of Truth
73. Devel::SmallProf
74. smallprof.out
76. Debugger Features
77. Trivial Debugger
78. Devel::OurProf
80. ourprof.out

81. Turnaround

87. Blunders
88. Pseudo-Hashes
92. The Missing 15%
93. Getting the Wrong Answer as Quickly as Possible
97. The Wrong Question
98. Trivial Benchmarks
100. 1+1=0
105. File Editing
106. Devel::SmallProf
107. Good Advice
108. Premature Optimization
110. Vanity, Vanity, all is Vanity
117. Numerical Calculation
126. Crappy Advice
127. each vs. keys
128. What to Remember
129. Jackson's Rules
132. Thank You

133. Bonus Slides
134. Pod::ParseTree::append
135. System Load
136. Memory Bound Programs
138. What's Memoization?
139. Walt's Dilemma
140. How Long Does It Take?
141. Cache Hit Rate
142. Time to Call a Memoized Function
143. Time Savings
144. For Example...
148. Devel::DProf
150. parse_text
151. Slide Manufacturing
153. Mail Folder Analyzer Revisited
154. The Innermost Loop
155. The 64% Question
157. The 90-10 Rule In Action
159. Error Variation
161. Mail Folder Analyzer Revisited
162. letter_histogram
163. Good Advice