Before we dig further into optimization techniques, let's define what exactly we are going to deal with. From this chapter's introduction, we know that focusing on improving application bottlenecks is critical for successful optimization. A bottleneck is a single component that severely limits the capacity of a program or computer system. Code with performance issues is usually hit with just a single bottleneck. We have discussed some profiling techniques in the previous chapter, so you should already be familiar with the tools required to locate and isolate troublesome pieces of code. If your profiling results show that there are a few places that need immediate improvement, you should try to treat each area as a separate component and optimize them independently.
If there is no explicit or evident bottleneck in your application but your application...