7 Eliminating work
This chapter covers
- Eliminating work by taming algorithmic complexity
- Reducing serialization overheads
- Managing memory with low latency
- Mitigating OS overheads
- Replacing slow computation with precomputing
Welcome to the third part of the book!
In the previous part of the book, we examined different techniques for organizing data when designing an application for low latency. We introduced techniques that aim to reduce latency to ensure data access is not a latency bottleneck for your application:
- Colocation to bring two components closer together.
- Replication to maintain multiple (consistent) copies of the data.
- Partitioning to reduce synchronization costs.
- Caching to temporarily keep a copy of the data.
In other words, we looked at how your decisions on data organization impact latency and what you can do to mitigate that. However, in this third part of the book, we’re switching gears to explore how to build low-latency applications from the computational perspective to understand how to structure your application logic when building for low latency.