タグ

optimizeとgccに関するkgbuのブックマーク (2)

  • 最適化・並列化コードを生み出す最新コンパイラ「インテル コンパイラー」 | OSDN Magazine

    最近のコンパイラには、出力するバイナリコードをより高速に実行できるようにする「最適化」機能が搭載されている。CPUPCアーキテクチャがより複雑化している近年、コンパイラによる最適化はより注目を浴びるようになっている。 たとえば、現在のCPUはいわゆる「マシン語」のコマンド列をそのまま実行するのではなく、内部でより細かい単位に分解して実行する。このとき、CPUのリソースをより効率良く利用できるよう、場合によってはその順序の並び替えや、並列化が行われる。また、処理を行うデータがキャッシュされているかどうかによっても処理速度が大きく変化する。CPUクロックの向上により、CPUとメモリ間でデータをやりとりする時間についても大きなボトルネックとなるようになったからだ。 このようにCPUの動作が複雑になっている現在、「より速く実行できるコード」を生成するには、CPUの構造やその動作についての知識も必

    最適化・並列化コードを生み出す最新コンパイラ「インテル コンパイラー」 | OSDN Magazine
    kgbu
    kgbu 2009/01/13
    CPUがこれだけダイナミックなシステムになってしまったからには、人手でできることは、もっと別のレベルになったのだろうな。生成されるコードも、brute forceな手法で作られてたりしかねないし、少なくともテストは大変
  • 関数ポインタのキャストと gcc - まめめも

    C の関数呼び出しは、関数定義の型と互換性のない型として呼び出したら未定義動作です。例えば以下のコードの動作は未定義です。 #include <stdio.h> int main(void) { ((int (*)(char *, ...)) &printf)("Hello, world!\n"); } printf は int printf(const char *, ...) なので、const が無くなってるのが間違ってます。未定義のプログラムはどのような実行結果になろうとも、C の規格には違反しません。 でも、現実問題としてこのコードは期待通りに動くだろー、と高をくくってました。しかし最近の gcc (3.4 以降くらい) では、このコードは落ちます。 $ gcc --version gcc (GCC) 4.3.1 Copyright (C) 2008 Free Software

    関数ポインタのキャストと gcc - まめめも
    kgbu
    kgbu 2008/09/01
    C言語というか、gccのようなコンパイラおよび、最適化の対象となるCPUのモデルって恐ろしく複雑怪奇なもののように思える。本当にこれでいいんだろうか(笑
  • 1