In my opinion, the efficiency issues should not be left to the compiler, they should always be fixed in the c++ code.
If you did something wrong that makes a program slower, fix it for sure. That includes messing up memory allocations and unnecessary copies.
Assuming the code is correct, though, trying to optimize code should be left alone until you find a code block that underperforms during your stress testing. I wrote real time code for a long, long time and the worst thing you can do to yourself is optimize where it isn't needed.. the code tends to get weird and full of 'do it this way because it ran faster' commentary and the programmer falls behind refactoring working code that was fine instead of writing new code. When you need speed, there is a time and place to mess with it, just choose your battles carefully.
Here is a link which tells you about Efficient C/C++ Coding Techniques: http://www.open-std.org/jtc1/sc22/wg21/docs/ESC_Boston_01_304_paper.pdf