ほんと、そのへんが、プログラマの領域だと思う。
俺はそうは思わない
コンパイラの賢さを考えると、人間が注力すべきは、プログラム全体のアルゴリズムであって、姑息な最適化じゃない
コンパイラが出力するコードは、人間が書くコードよりも、圧倒的に賢い
まず、基本ブロックの入れ替えが起るような、大域的な最適化は、手じゃ絶対に無理
例えば Lazy Code Motion (PLDI '92) を手でできる人はいないだろうし
partial redundancy elimination が扱っている冗長性を理解している人すら、あまりいないだろう
それに、局所的な最適化でもコンパイラ(を書いた人)のほうが賢い(ハードウェアに詳しい)
ターゲットマシンが x86 で、レジスタを0で初期化するときに、gcc で最適化オプション付けると
xorl %eax, %eax
ってなるけど
subl %eax, %eax
でも
movl $0, %eax
でも無く、xor が一番速い理由を知ってるやつとか、なかなかいないだろう
「変なコードを書いてマシンを壊したりしてしまわないだろうか」という危惧ではない。 学べば学ぶほど現代のマシンのアーキテクチャの複雑さや最適なコードを組む難しさを思い知ら...
それが面白いところだと思うんだけどなぁ。 8ビットの演算を高速化するためにMMX使っていたり 同じコードがMMXない石(ARMとかな)用に32Bitレジスタを使って8Bit演算を2つ同時に行う(16...
ほんと、そのへんが、プログラマの領域だと思う。 俺はそうは思わない コンパイラの賢さを考えると、人間が注力すべきは、プログラム全体のアルゴリズムであって、姑息な最適化じ...
遅くていいと思うけど。 早いコードが必要なのは全体のうちの10%以下だと思う。
速い必要はないが、遅いのは論外だし、速くできない構造の設計は論外。 アホみたいにスパゲティになってたり、バグを防ぐために変な位置で多重にロックしてたりとか、どうにもなら...
Premature optimizationでググれ。話はそれからだ。 いや、何のプログラム書いてるの? そんなにスピードが必要って、かなり特別なことしてるんじゃないかと思うんだけど。