アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー
本当にあった怖い話 (スコア:5, 興味深い)
Pen4 2.8G HTで2000秒かかった。
(プログラムはとある画像処理のプログラム)
何でかなぁと思ってソースを眺めていたら (注・他人が書いたコード)、
ifの嵐になっている部分があり、なおかつそのifの分岐確率がほぼトントンのようだった。
そのため、分岐予測が失敗して、パイプラインストールが大量に発生していて、
パイプラインの深いPen4が圧倒的に遅くなってしまったようだ。
これマシン語じゃなくて、CPUの中の人の話か……。
Re:本当にあった怖い話 (スコア:1, 興味深い)
Intel C++ Compilerでも1.4倍ほどAthlonの方が早かったのも意外だった。ICCはAthlonでも有効。
先輩がアセンブラで一生懸命チューンナップして書いたのにICCでコンパイルした方が早かった、なんて結果もあったり。先輩、intelの最適化技術に感心半分,悔しさ半分w
いずれにせよ、下手にアセンブラで書き直すより優秀なコンパイラに任せた方が効果的な場合も多そうです。
Re:本当にあった怖い話 (スコア:1, すばらしい洞察)
その、「優秀なコンパイラ」を作るのには、アーキティクチャを
理解しなくてはならないですよね。
CPU チェック (スコア:0)
CPU 毎に分岐パターンを替えなければいけないってことなのか?
Re:CPU チェック (スコア:1)
キャッシュが小さいCPUは処理の単位が小さい方がいいだろうし、
パイプライン深ければ分岐予測が失敗しにくいコードのほうがいいだろうし、
浮動小数点の苦手なCPUならなるべく整数演算で済ませるとか。
同じSSE命令でもレイテンシの高いCPUと低いCPUがあるし。
# 本当はこういう最適化こそコンパイラの仕事だと思うけどね~
Re:CPU チェック (スコア:0)
そういうコンパイルオプションはあるし、ライブラリがCPU依存のものもあるから
必要に応じてそういう道を選ぶことは可能。滅多にその手の場面には出くわさないが。