Summary
In this chapter, you have learned:
- How to define the complexity of the code and some approaches to reduce it
- How to improve performance using some architectural trade-offs
- What caching is and how to use it to improve application performance
The preceding methods concentrated our optimization efforts inside a single process. We tried to reduce the code complexity, choose better datatypes, or reuse old function results. If that did not help, we tried to make some trade-offs using approximations, doing less, or leaving work for later.
In the next chapter, we will discuss a few techniques for concurrency and parallel processing in Python.