In this chapter, you learned how to compare the efficiency of algorithms by using big O notation. We now know that the C++ STL has complexity guarantees. All STL algorithms specify their worst-case or average-case performance guarantees, whereas containers and iterators specify amortized complexity.
You also learned how to quantify software performance by measuring latency and throughput.
Lastly, you learned how to detect hotspots in your code by using CPU profilers.