@relhimp

Well, that's explains how we're overriding any hardware performance gain we're still getting with out software.

@OpferMomo

What if there are no hotspots

@wdavid3116

This is old fashioned thinking that hasn't aged well. Yes profiling is important and good, but never do anything for performance unless it's measured before and after? No that is insane. Pick extremely inefficient algorithms from the start? Architect your program in a way that relies on poorly organized items in memory causing constant cache misses? Use endless layers of abstraction? Use tools (languages, databases, libraries etc,) that are too slow for the needs of your program from the get go? 

This thinking is from crazy optimizations often involving inline assembly that used to be commonplace, but such things are almost never useful let along required anymore and making your code perform better doesn't have to make your program harder to read. Ignoring performance and optimization can lead to the development of a system that has to be essentially rebuilt from the ground up to meet its performance requirements.