x86 で動作する C/C++ コンパイラ

作成日:2003.05.13
更新日:2006.01.12

What's New
(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++ コンパイラとして、 以下のような処理系があった。


手持ちの処理系の比較

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 ほどしか実行できない。

コンパイラが通らない理由はほとんど、 処理系のインクルードファイルに原因がある。
ライブラリに気をつけならがインクルードファイルを修正すると ビルド可能なベンチマークが増えそう。


コメント

コメントを書き込む
[1] [名無しさん] 2005-08-21 21:07:48
非商用の TCC というコンパイラがあるようです
http://fabrice.bellard.free.fr/tcc/
[2] [nminoru] 2005-08-23 19:53:10
情報ありがとうございます。
Tiny C Compiler を加えさせてもらいました。
[3] [ななし] 2006-05-30 11:37:25
Sun Studio Compilerは、Linux版のTechnology Previewsがあります。
x86_64用のコードも吐けます。
http://developers.sun.com/prodtech/cc/downloads/tech_preview.jsp

以前ダウンロードしたときは、dbxとかlintとかも一緒に入ってました。
[4] [nminoru] 2006-05-30 22:15:59
ななしさん情報ありがとうございます。

AMD64 に特化した C/C++ コンパイラの中では Sun の Compiler が最も HPC 系の計算に強いので、Linux で動いてくれるとありがたいですね。

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp