Requirements and considerations
When designing algorithms for performance-critical parts of problems, it is important to understand the factors that can help or hinder the performance. To that end, we will discuss the architecture of modern processors, memory, and other aspects of modern computers that have implications for performance in the following chapter. This section serves to highlight some of the ways in which we can avoid bottlenecks when designing algorithms.
One of the most important things to remember is to make use of standard tools (including those outside the C++ language or standard library) that are heavily optimized and will almost always perform better than a hand-crafted solution. This really is part of the abstraction and pattern recognition before writing the algorithm, but realizing parts of your problem as instances of well-understood problems, such as linear algebra, means you can use library functions instead of having to write these parts by hand.
...