各種Cコンパイラ最適化比較
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGあるわけです。
VC++ BC Watcom GNU-C Symantic
これら各コンパイラの最適化オプションをmaxにした状態で
比較した場合、実際の性能はどんな感じなんでしょう?
当然、この手の議論は「case by case」なんでしょうけど
「自分ならそのケースでの比較はこうだったよ」だとかの情報交換に
このスレを利用してみてください
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG>>1には書いてないけどintelのコンパイラとVCを比べると
総合的にはVCの方が速いようなんだけど、
extern int table[5][7];
uchar a, b;
c = table[a][b];
みたいな簡単な2次元配列へのアクセスだと明らかにintelが速かったよ。
0004デフォルトの名無しさん
NGNGなのでしょうか?ショップを見てもないもので・・・
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGC++の最新使用への適合度知りたい
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG出典きぼん
0010デフォルトの名無しさん
NGNG0011名前ついてますか?
NGNGgccはもっと registerが多い CPU向けなんじゃないの?
と言い訳してみる。
0012デフォルトの名無しさん
NGNGVTuneって製品で供給されるよ。
20-30%は多分間違いなく高速化される。
0013デフォルトの名無しさん
NGNG> 20-30%は多分間違いなく高速化される
そうでもないけど・・・
試した限りでは浮動小数点系はIntelの方が早くなってたかな。
整数系の簡単な演算を含むパワフルなループはVCの方が早いこともしばしば。
0014デフォルトの名無しさん
NGNGすまそ。俺の思い違いだ。
俺の使ってるフリーのライブラリなら。って事でした。
値段に見合う価値は俺のところでは合ったよ。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG値段に見合う価値ってVCの方が高いんだが、糞だったのけ?
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGIntelのVer.5お試し版とやら(40MB)をダウンして、インストールしたら、
VC++ねえぞ。おととい来やがれと言われた(泣
0020デフォルトの名無しさん
NGNGどこんにあるのん?
002120
NGNG0022デフォルトの名無しさん
NGNG0023名無しさん@お腹いっぱい。
NGNGバグだらけで使い物にならなかったんで5.0で消えたやつ。
0024デフォルトの名無しさん
NGNG0025:デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027:デフォルトの名無しさん
NGNGパッケージにそう書いてある。
0028デフォルトの名無しさん
NGNG8080用としてはね。
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031名無しさん@お腹いっぱい。
NGNG86でもZ80でも。
0032デフォルトの名無しさん
NGNGコンパイル速度が遅いのがアレですね。(TurboC++とかと比べてですが)
でもDOSで作るならこれとTurboC++できまり・・
TurboC++はほんと速いね。
0033デフォルトの名無しさん
NGNGオープンソース化されたと聞いたけど、まだ公開されてないのかな?
0034デフォルトの名無しさん
NGNGまだドキュメント公開だけ. 長い目で見ましょう.
0035名無しさん@お腹いっぱい。
NGNGほぇ〜、そういうことになってたのか。
昔散々使いまくったHI-TECH Cはどうなったかなぁ?
0036デフォルトの名無しさん
NGNGほれ。
http://www.hitech.com.au/
コマンドライン版は、Pacific C という名でフリーになっちょる。
0037名無しさん@お腹いっぱい。
NGNG86用はversion upしてるのにZ80用はしばらくしなかったので
開発終わっちゃったのかなと思ってたらある日突然versino upして
Z80用の担当者がスキーで足を折って入院してたから
updateできなかったという断り書きが付いていたのには笑った。
オーストラリア人って呑気なのかね。
0038>36
NGNG0039test
NGNG0040このスレの趣旨とは違う気もするが
NGNGsum+=i;
}
を
k=n/3;
for(i=0;i<k;i++){
sum+=i;
}
って書いた方が速くなるかなとも思ったが
こんなものはコンパイラが最適化するだろうと思いつつ
一応コンパイラ(BCC)が吐いたコード見たら最適化されてなかった…。
#つまりループ毎に2で割ってた。(1右シフト)
そういうもんかな?
004140
NGNG○ k=n/2
0042デフォルトの名無しさん
NGNGデバッグモードでビルドしてるんじゃない?
VC++でも最適化OFFでビルドすると、シフトに置き換えないよ。
004340
NGNGシフトは別にいいのだが(というかするべきだろ?)
ループ毎にやるのがいかんって言ってるのじゃ。
ループに入る前に一回だけやって値を保持しとけばすむことなのに。
004442
NGNGとりあえず、VC++6.0の最適化ONでコンパイルしてみたけど
xor esi, esi //sum = 0
sar eax, 1 //n >> 1
xor ecx, ecx //i = 0
test eax, eax
jle Label2
Label1:
add esi, ecx //sum+=i
inc ecx
cmp ecx, eax
jl Label1
Label2:
ちゃんとループの外に出していたね。
BCCアホ説浮上。
0045デフォルトの名無しさん
NGNGconst int nn = n;
for(i=0;i<nn/2;i++){
sum+=i;
}
これで毎回/2してたらアホ説確定。
■ このスレッドは過去ログ倉庫に格納されています