Navigation Log - なびろぐ -
1999/01/06

...X680x0 spirit inside...

この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
with you【期間限定盤】 [音楽]
with you【期...
Amazonほしい物リスト


1999/01/06 (水)

コンパイラ最適化

_ コンパイラ最適化について、ちょっとだけ書いておくか。

_ 「演算強度の軽減」は、「かけ算を足し算の集合に置き換える」こと。昔はかけ算は足し算に比べて異様に重く、足し算に置き換えることには大きな意味があったのだ。今でこそ大した差ではないが、それでもやはりかけ算よりは足し算のほうがコストは少ない。

_ 「ループ内不変値掃き出し」は、ループ内で不変となる値の計算をループ外に置くこと。毎回同じ値になる計算をすることがばかばかしいのは言うまでもないこと。


for ( i=1; i<10; i++ ) {
  for ( j=1; j<i; j++ ) {
    for ( k=1; k<j; k++ ) {
      printf( "%d", i*j*k );
    }
  }
}

_ こんなコードで、効果がわかるはず。「演算強度の軽減」がかかればかけ算コードが消えるし、「ループ内不変値掃き出し」がかかればi*jの計算はkループの外側に出る。両方かかると・・・trickyでcoolなコードが出るので見てみるよーに。

_ 初めてgcc for X68でこの最適化を見たときは感動したっけなぁ・・・いろいろなプラットフォームでのコンパイル結果を見てきたけど、gcc for X68よりcoolなコードにはまだお目にかかってない気がする・・・。


[URL] [View Log()] [Trackback]
Name: Comment:



メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」