アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
本当にあった怖い話 (スコア: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, すばらしい洞察)
その、「優秀なコンパイラ」を作るのには、アーキティクチャを
理解しなくてはならないですよね。
Re:本当にあった怖い話 (スコア:1)
それが必要な人にとって、必要な知識であるのは自明です。
同様に、ドライバの作成者、組み込み技術者なども、ハード知識がなければ仕事になりません。
そして、そんなことは、あえて改めて言うことでもありません。
それらの技術屋がハード知識を知らないのは、そもそも論外です。
であれば、元文章はどの階層の技術者に何を言いたかったのでしょうかね?
やっぱり、旅行者の法則だと思うけどな・・・
Re:本当にあった怖い話 (スコア:0)
ただ、誰しもコンパイラを作る必要はないわけで、下手にマシン語による開発に拘るよりも
丸投げした方が結果的に効果的な局面もあるというただの経験談ですから。
件の先輩の話も、当人がアセンブラで書く能力があったから導き出せた結論なわけで、
知っていて使うのと知らずに使うのでは開発力としての差が出てきそうです。
理解しているにこしたことはないでしょう。
Re:本当にあった怖い話 (スコア:0)
>丸投げした方が結果的に効果的な局面もあるというただの経験談ですから。
コンパイラ任せにする時でさえも、アーキテクチャやコンパイラに関する知識が
全くないと良いソースを作るのは難しい。これなんかはその好例だと思う。
CPU チェック (スコア:0)
CPU 毎に分岐パターンを替えなければいけないってことなのか?
Re:CPU チェック (スコア:1)
キャッシュが小さいCPUは処理の単位が小さい方がいいだろうし、
パイプライン深ければ分岐予測が失敗しにくいコードのほうがいいだろうし、
浮動小数点の苦手なCPUならなるべく整数演算で済ませるとか。
同じSSE命令でもレイテンシの高いCPUと低いCPUがあるし。
# 本当はこういう最適化こそコンパイラの仕事だと思うけどね~
Re:CPU チェック (スコア:0)
そういうコンパイルオプションはあるし、ライブラリがCPU依存のものもあるから
必要に応じてそういう道を選ぶことは可能。滅多にその手の場面には出くわさないが。
Re:本当にあった怖い話 (スコア:0)
そして、車輪の再発明論争へ...
Re:本当にあった怖い話 (スコア:2)
あながち無駄ではないのかもしれない。
Re:本当にあった怖い話 (スコア:0)
PHPはPerlのテンプレートエンジンとして実装したらいいし、
RubyなんてPerlの亜種みたいなもんじゃないか。
# もちろん無駄が悪いとは思ってないからこれはこれでいいんだけどね。
# 多様性もいいことだし、「俺がもっといいものを!」というのは重要な動機と思うし。
Re:本当にあった怖い話 (スコア:1)
車輪の再開発もありだよね。
もっと効率的な車輪を開発ってことで...
たとえ得て不得手があったとしても、使い分ければよいことですし。
#なんとなくF1の開発とチューニングによって差を出している競走が連想される
Re:本当にあった怖い話 (スコア:0)