作成日:2003.05.13
更新日:2006.01.12
(2006.01.12) 情報を更新。
(2005.08.23) Tiny C Compiler の情報を追加。
(2005.07.07) Borland C++ Compiler の情報を更新。
(2003.05.13) 4/18 の日記を元にしてページを作成。
コンテンツ
x86 バイナリを生成可能な C/C++ コンパイラ処理系のリスト
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++ コンパイラとして、 以下のような処理系があった。
- IBM VisualAge C++ Compiler (Windows をサポート)
- KAI C++(IA-32/Linux) 最適化コンパイラとして有名だったが、 Intel に吸収されて 2002 年に販売中止に。
手持ちの処理系の比較
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 で動いてくれるとありがたいですね。