Fixing the Algorithm
In the previous chapter, we explored the concept of performance and looked at different scenarios where we would like to make a program faster. The previous chapter was largely theoretical, but now is the time to look at it in a more practical way.
There are two main approaches to speeding up a program, as follows:
- Replace the algorithm with a better one
- Fine-tune the code so that it runs faster
I spent lots of time in the previous chapter discussing time complexity simply to make it clear that a difference between two algorithms can result in an impressive speed-up. It can be much more than a simple constant factor (such as a 10-times speed-up). If we go from an algorithm with bad time complexity (say, O(n2)) to an algorithm with better behavior (O(n log n), for example), then the difference in speed becomes more and more noticeable when we increase the size of the data.
Saying all that, it should not be surprising that I prefer the first...