Chapter 55. Fast vs. Efficient
Fast and efficient are different. An inefficient program can be fast, and an efficient program can be slow. Neither implies the other. For example, Kevin’s team considered their invoice program “fast” when it ran in 40 seconds, even though it was grossly inefficient (executing about 80,000 more “block read” calls per execution than it should have). On the other hand, even a program with perfect efficiency will run slowly on a system that is too busy.
Efficient is an objective measure of waste; it’s all about event counts. But fast is different. Of course, an execution’s speed is objectively measurable, either as a response time or a throughput. But whether that speed is considered fast or slow depends upon what you expect about it. Whether an execution is fast or slow is subjective. It’s an agreement.
One of Kevin’s team members said in a call one day, “If my cell phone service provider’s website made me wait 40 seconds for my invoice, I’d probably switch to another provider.” The team accepted their own 40-second response times because they grudgingly assumed there was no way to make invoicing go faster. But when they improved the code to take less than a second instead of 40+, it reset the team’s tolerances. With the new remedied code, 40 seconds isn’t fast anymore. What was fast yesterday is unacceptable today.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access