Я только что прочитал руководство g cc, чтобы узнать разницу между -O3
и -Ofast
.
Для -O3
-O3
Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the following optimization flags:
-fgcse-after-reload
-fipa-cp-clone
-floop-interchange
-floop-unroll-and-jam
-fpeel-loops
-fpredictive-commoning
-fsplit-paths
-ftree-loop-distribute-patterns
-ftree-loop-distribution
-ftree-loop-vectorize
-ftree-partial-pre
-ftree-slp-vectorize
-funswitch-loops
-fvect-cost-model
-fversion-loops-for-strides
В то время как -Ofast
-Быстрый
Disregard strict standards compliance. -Ofast enables all -O3 optimizations. It also enables optimizations that are not valid for
все стандартные программы. Включает -ffast-math, -fallow-store-data-races и Fortran-speci c -fstack-arrays, если не указан -fmax-stack-var-size и -fno-protect-parens
Поэтому мне было интересно, может быть, -Ofast
по какой-то причине менее безопасен, чем -O3
, и поэтому мне следует придерживаться -O3
в большинстве случаев.
Может Вы уточняете «практическую разницу» при их использовании? А если -Ofast
действительно безопасно?