The trickiest part of speeding up a program is not doing it, but deciding whether it's worth doing at all.

Defining the problem

Before optimization, you need a measure of efficiency. Walltime describes physical time (like a clock on the wall). Walltime is from computation on CPU and time spent waiting for data from storage or network.