作成日:2003.05.13
更新日:2006.01.12
x86 というか IA-32 命令セットに基づくバイナリを生成可能な
C/C++ コンパイラ処理系のリスト。
ただし DOS 時代の 8086 命令を生成するだけのものは省いた。
| メーカ | 名称 | 対応OS | 備考 |
|---|---|---|---|
| Microsoft |
Visual C++ 6.0 Visual C++ .NET 2003 Visual C++ .NET 2005 |
Win |
Microsoft の出している C/C++ コンパイラ。 高度な最適化はないが、 IDE (Visual Studio) とライブラリ群(SDK & MFC & ALT) が 強力であり、Win のデファクトスタンダードコンパイラなので 広く普及している (おそらく世界で一番広く売れた商用コンパイラであろう)。 このコンパイラが x86 コンパイラの バイナリ品質の基準になると思われる。 コンパイラのコアツールだけが Microsoft Visual C++ Toolkit 2003 として公開された。 |
| Intel | Intel C++ Compiler 7.1 / 8.1 / 9.0 |
Win Linux Mac |
IA-32 の本家 Intel の出している C/C++ コンパイラ。 方々のメーカーから引き抜いたコンパイラ屋が多数いるようで、 最適化は非常に強力。 SSE / SSE2 のような新しい命令セットにも素早く対応する。 また、 Windows / Linux とも性能チューニングソフト VTune と 連係できるのが特徴。 コードの速度という意味は No.1。 (追記) Linux 版は v8.1 まで 非商用利用のライセンスの下 で 無料で使用することができる (IA-32 & IA-64)。v9.0 の公開は 2005年 3Q。 (2006.1.12) MacOS X for Intel に対応した ICC のβ版が 公開中。 |
| Borland | Borland C++ Compiler 5.5 | Win |
コンパイラの老舗 Borland の C/C++ コンパイラ。
Borland C++ Compiler 5.5 は、
統合開発環境 C++ Builder 内のコンパイラエンジンでもあるが、
コンパイラ単体はフリーで使用することができる。 コード品質は Visual C++ に負けている。 (2005.07.07) C++Builder6 が発売される。 C++ Compiler 部も変更。 |
| Metrowerks | Code Warrior |
Win Linux |
Mac や組み込み系用の開発環境で有名な Metroweks の C/C++ コンパイラ。
Windows 版は日本語版があるが、
Linux 版は英語版のみの模様。 Code Warrior のコード品質は不明。 (2005.6.22) 2005年4月で販売終了。 |
| PGI | PGI compiler 6.1 |
Win Linux |
並列化 Fortran で有名な PGI の C/C++ コンパイラ。 C/C++ コンパイラとしても最強の部類にはいる。 Intel 以外では SSE2 命令を生成する C/C++ コンパイラは これだけだのようだ。 また、 AMD の CPU への最適化をされ、 5.0 からは AMD64 にも対応する(β版あり)。 |
| 富士通 |
Fotran & C Package Parallel Fotran & C Package |
Win (V3.0 L10) Linux (V5) |
富士通の C/C++ コンパイラ。 「Parallel Fortran & C Package」は Fortran には自動並列化機能があるのだが、 C/C++ コンパイラ側にはない。 特に特徴はなく、 性能は GCC とどっこいどっこいである。 |
| SUN |
Sun Studio 10 Sun Studio 11 |
Solaris (x86) |
x86 Solaris のために SUN が作成した C/C++ コンパイラ。 使用経験がある人が周りにいない上に、 情報に乏しいので実体はよく分からない。 Sun Studio 11 は無料ダウンロード可能。 |
| PathScale | PathScale EKO Compiler Suite 2.1 |
Linux |
AMD64 用の C/C++/Fortran コンパイラだが IA-32 互換バイナリも生成できるようだ。 詳細不明。情報求む。 30 日の試用版あり。 |
| Absoft | Pro Fortran95 Compiler Suite v9.0 | Win | Mac 用 Fortran で有名な Absoft 社の製品。 Fortran に附属している C/C++ コンパイラなので性能は未知数。 Windows 版のみ。 |
| ? | Miracle C Compiler | Win | 謎のシェアウェアの C コンパイラ。US $19。 |
| ここより非商業の C/C++ コンパイラ | |||
| GNU |
本家 GNU Compiler Collection cygnus MinGW: Minimalist GNU For Windows |
Win Linux |
GNU Compiler Collection の C/C++ コンパイラ。 最適化は強力ではないが、 C/C++ の各種規格に素早く準拠するので安心なコンパイラ。 |
| OpenWatcom | Open Watcom C/C++ & Fortran 1.3 | Win |
商用の Watcom C/C++ & Fortran が
ベースとなった
オープンソースコンパイラ。
C/C++、FORTRAN77 コンパイラがある。
現在は、Windows / OS2 のみだが
Linux や FreeBSD への展開も考えているようだ。 環境には DOS 時代から引き摺っている癖があり、 UNIX から移植してきたソースコードなどは素直にコンパイルできない。 また、最適化性能は低い。 |
| Dave Hanson and Chris Fraser | lcc 4.2 |
Win Linux .NET Framework ? |
C コンパイラの教科書をために作られた C コンパイラ。 ソースコードの規模が小さく、 C コンパイラを勉強してみようという初心者が読むには最適。 最適化は実質的にない。 |
| Open Software Systems Group (OSSG) at DERA around its TDF/ANDF | TenDRA 4.1.2 | Linux | (調査中) |
| Digital Mars | Digital Mars C/C++ compiler v8.43 | Windows | (調査中) |
| Fabrice Bellard | Tiny C Compiler (TCC) 0.9.23 | Linux/Windows |
小さくてコンパイルが高速な C コンパイラ。 C99 と GCC拡張にも対応し、 Linux のカーネルもビルドできる(ようだ)。 ライセンスは LGPL |
そのほかでは今はラインナップから消えている C/C++ コンパイラとして、 以下のような処理系があった。
x86用 C/C++ コンパイラ処理系の性能比較を SPEC INT2000 を用いて行う。
計測を行ったのは Windows 環境用の
商用の処理系 2 種類と、
フリーで入手できる処理系 3 系統 4 種類。
コンパイラ名 オプション ICC Intel C/C++ Compiler 7.0 -Qipo -QxK -O3 -G6 <FDOオプション> MVC Microsoft Visual C++ 6.0 /Zi /Ox /G6 GCC2 gcc 2.95.3-5 (cygwin) -malign-double -fomit-frame-pointer -O3 GCC3 gcc 3.3.1 (cygming special) -malign-double -fomit-frame-pointer -O3 BCC Borland C++ Compiler 5.5.1 -6 -O2 -Oc -Oi -OS -Ov -Og -Os -Ox -w-8064 -w-8065 WCC Open Watcom C/C++ ver1.0 -6r -FP6 -OX -OH -OL+
コンパイルと実行 & 計測テスト環境は、 Pentium III (L1:16KB(I)+16KB(D)/L2:256KB(I+D)) 1GHz x2 / PC133 1GB / Windows 2000 Pro マシンで行う。
ICC は feedback optimization が
ある場合とない場合の両方を実行した。
結果は下の表の通り。
c/e はコンパイルエラー、
e/e は実行時エラーまたは結果が不正だったことをあらわす。
Benchmark ICC+FDO ICC-FDO MVC GCC2 GCC3 BCC WCC 164.gzip 469 426 378 341 385 281 302 175.vpr 326 324 293 274 288 255 c/e 176.gcc 370 341 e/e e/e e/e c/e c/e 181.mcf 266 266 239 256 255 241 237 186.crafty 486 469 449 445 448 356 c/e 197.parser 349 318 282 295 301 252 266 252.eon 614 529 308 238 c/e c/e c/e 253.perlbmk 534 455 e/e c/e c/e c/e c/e 254.gap 398 354 336 346 347 c/e 282 255.vortex 682 515 451 363 397 c/e c/e 256.bzip2 362 367 292 300 303 272 c/e 300.twolf 307 313 293 295 300 e/e c/e
性能以前の問題として、12個のベンチマークを正しくコンパイルして実行できたのは
Intel C/C++ コンパイラだけだった。
MVC は 176.gcc を実行中にエラーが発生、
GCC2 は 253.perlbmk がコンパイル不能で
他 2 つのベンチマークで実行中にエラーが発生した。
BCC はベンチマークの半分ほど、
WCC は 1/3 ほどしか実行できない。
コンパイラが通らない理由はほとんど、
処理系のインクルードファイルに原因がある。
ライブラリに気をつけならがインクルードファイルを修正すると
ビルド可能なベンチマークが増えそう。
http://fabrice.bellard.free.fr/tcc/
Tiny C Compiler を加えさせてもらいました。
x86_64用のコードも吐けます。
http://developers.sun.com/prodtech/cc/downloads/tech_preview.jsp
以前ダウンロードしたときは、dbxとかlintとかも一緒に入ってました。
AMD64 に特化した C/C++ コンパイラの中では Sun の Compiler が最も HPC 系の計算に強いので、Linux で動いてくれるとありがたいですね。