2016/10/21

[c/c++]私のC言語 - 最適化

C/C++なら、ネタが無いときでも何か書けるだろうと甘い考えを抱いていたのですが、かなり甘いことがわかりました・・・。
善処します(≒がんばらない)。

 

C/C++以外の言語はよく知らないが、C/C++ではコンパイル時に最適化オプションの選択ができることが多い。
選択できない場合は、コンパイラ自体は選択できるけれども、ツールのデフォルトが固定になっているとかだろう。

私の最適化オプションの選び方は余り根拠がない。
開発環境が提供されていて、サンプルアプリがあるようであれば、その設定を流用する。
位置から書かないといけない場合は、gccでいえば-O2くらいを選んでいる。
最近は、-O3で提供された環境が多かったから、-O3でもいいかな。

そう、根拠がないのだ・・・。

逆のパターン、最適化をゆるくするときは、だいたい決まっている。
動かしてみて、不明なエラーが出ていて、最適化をしなくても余裕がある場合だ。
まあ、だいたいロジックに不具合が見つかるのだけど、それを解決しても最適化レベルはなんとなく低めにしてしまう。

やっぱり、根拠がないのだ・・・。


ともかく、正しく動いているのであれば、最適化が弱かろうと強かろうと、どっちでもよいだろう。
正しいというのは、速度的にも満足していないといけない。

古くから組み込みをやっていて、最適化で痛い目を見た会社だと「最適化禁止!」というところもある。
昔はコンパイラのバグとして、最適化処理にバグがある、ということがしばしばあったのだけど、最近はユーザも多いし、最新版とかじゃなければ大丈夫だろうと思っている。

コンパイラにバグがなければ、あとは人間の問題だ。
痛い目を見ながらでも、技術を上げていった方が良いんじゃないかと思っている。

思っているのだけど、管理する立場からすると、そんな面倒なことに関わり合いたくないという気持ちはわかる。
「最適化禁止!」としてしまって、不安要素は最初から取り除いておこう、という行動は合理的だと思うのだ。
やることは他にもあるしね。

 

だけども、だけれども、だ。
最適化を禁止にするというのは、コンパイラに負けた気がするのだ。
使いこなせないということを告白するようなものなので、せめて「最適化を許可しても動くんだけど、ふん、ルールには従ってやるわい」くらいのところまではやっておきたいのだ。

文字にすると、すごく負け惜しみっぽいですな。。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。