It used to be that -O3 produced significantly faster binaries than -O2.
It changed a few versions ago,
both as a consequence of source code modifications, which are friendlier to compiler's optimizations,
and as a consequence of compiler's improvements.
Note though that this result (-O2 faster than -O3) is not a sure outcome.
You will find that such difference vary, depending on compiler type and version.
If I do remember correctly, I considered switching to -O2 a while ago,
but shelved the idea after finding a few configurations in which -O2 was actually slower.
I'm likely to reconsider it in the future.