JavaでC++並みの実行速度を出すPGを組むスレ
■ このスレッドは過去ログ倉庫に格納されています
0562デフォルトの名無しさん
2007/05/29(火) 23:06:00> 隠れねっての。nsecオーダーの事象とmsecやsecオーダーの事象を同列に扱うな。
事象1回あたりの遅延時間のオーダーで比較するのはナンセンス。
プログラムが単位時間走る間に、何パーセントの時間を何に使っているか、ということで論じるべき。
> 突然「アルゴリズムを支配するのはキャッシュ」って・・・。脳みそあんのか?
支配するとまでは言ってないが。
ちなみに、メモリ・ウォールという言葉をしっていますか?
> こっちは、そうではなく、アプリレベルの応答速度に求められるオーダーと、
> VMに求められる速度のオーダーが「桁違い」なんで、一定以上の速度のプロセッサ
> になったら、そんなもんは隠れるっていってんの。
そんな条件下で、JavaとC++の速度比較してもなぁ。
速度比較をするなら、処理時間にプロセッサのアイドル時間を計算に入れるのはやめてほしい。
私が言いたいのは、JavaのJITコンパイラが生成する最適化が甘いコードと、
C++コンパイラが生成する最適化が行き届いたコードとの、速度差が十分に小さいということ。
Javaだけでなく、
C++コンパイラのミクロな命令最適化も、使っても使わなくても、大して速度が違わない。
最適化なしで10,000msecかかる処理が、最適化して9,500msecになる程度。
なぜこういうことになったかというと、キャッシュミスしたときのペナルティが支配的だから。
> キャッシュのミスヒットの蓄積がアプリに影響を与えるレベルの応答速度の話だと、
> そもそもVM自身も「キャッシュミスヒット」を起こす可能性があるんだから
VMといってもJITだからね。重いのは最初だけよ。
■ このスレッドは過去ログ倉庫に格納されています