Lot of comments, my thoughts:

I like OOP where appropriate simply because I like the idea of functions being part of a class instead of defined separately, i.e. I like doing this:
Code:
aFart.Release();
//vs.
ReleaseFart(aFart);
Compiler optimization: a good mix of using the compiler flags and your own knowledge is the true way to go, you can't do well with just one. For example, I've seen the Intel compiler produce insanely fast executables under normal flags that Clang or GCC can't touch, and conversely, some compilers are too dumb to recognize simple things like dividing by the same number several times and replace that op with multiplication of the reciprocal (way faster).