コンパイラの最適化オプションとパフォーマンス

不思議な現象を発見。
だいぶ前、SHだとSELinuxのオーバーヘッドが大きいけど、手作業関数インライン化すると
なぜか早くなったという話があった。
原因は不明だったけど、shlinux MLで、SH linuxの中の人に聞いてみた。
コンパイラが怪しいんじゃないといわれた。
色々やってみたが、やっぱり変だ。

SELinux(チューニング無し)のパフォーマンスを測ってみた。
gccの最適化オプション-Os, -O2で測った。
すると、lmbenchの結果が、
「-Os」オプションのほうがいいという不思議な結果が出た。
SELinuxオフだと-O2のほうが微妙に早いっぽいのだが。
うーむ。最適化って不思議だ。
-Osだとサイズ最適化するのだけど、サイズが小さいコードのほうが、
実行コードも少なくて、下手に頑張るより早いとか?
SH linuxのメンテナによると、ARMボードの多くでは-Osをデフォルトにしてるとか。