How to optimize an application
This is probably all obvious, and non-controversial. What may not have been so obvious, is that the thing that makes it practical to optimize, is the simplicity and understandability of the code (much more than - as is commonly believed - how generally performant the initial code is).
It's well known that "Premature optimization is the root of all evil". But the reasons for this, and the implications are less widely understood.
Though this is anecdotal, it may still help. I've been hired dozens of times to fix performance problems in code. Nearly always the effort breaks down as:
If you can make the 'learning and undestanding the code' bit faster, and the 'refactoring the code so that the bottlenecks take place in modular, replacable chunks' part pre-done, optimizing bottlenecks becomes cheap and easy.
In C++, there is a heavy emphasis on the idea that all abstractions should be light weight, and (nearly or really) zero cost.
This is not necessarily a bad thing for a language, but for the reasons outlined above, it IS a bad thing (or the wrong emphasis) for application developers.
You want to first and foremost keep the code clean and simple. And then only for the 'modularly isolated' parts where performance is critical drop down to possibly using lower level features and lighter weight abstractions.
This thinking of lowest-possible-cost abstractions permeats most other C++ libraries (e.g. boost). That makes them very good for that narrow piece of code that you must optimize, but less of a good choice to write the other 99% of your application.