関数の inline 化って inline 化した後引数伝播してさらにぐりぐり弄くれるから速くなりやすい、くらいのイメージ。
2013-07-03 00:16:30@maropu いや、そのケースは(規則性が無いなら)絶対分岐確率低い順に並べるべき! 元の文脈はJITの場合にのみ除ける仮想関数呼び出しオーバーヘッドがあるか、って話なんですが、JITで除けるケースは分岐予測でもいけるし、パイプライン乱さなかったら間接参照なんて誤差、って話。
2013-07-03 00:28:54というか仮想関数周りって宗教戦争級に議論になりやすい気がするけど、現実的な状況で数値出して議論してる文献とかどれくらいあるんだろ。例えば WebKit に全部 virtual つけて回ったら遅くなりませんでした/こんだけ遅くなりました、みたいなの。見てる領域が違うだけな気がする
2013-07-03 00:35:43人力コンパイルしてると言明している人でここまで狭義の人類なし
2013-07-03 00:38:51@dmikurube 新しいのは知らないけど、仮想関数向けの分岐予測が議論されていた頃のいにしえのデータなら例えば http://t.co/9NQngJ6eJt とか。
2013-07-03 00:40:32人力コンパイルは辞められない。辞めるとかそういうのじゃない、人力コンパイルは常にそこにあるものだ。あとは、人力コンパイルが楽しく簡単にできる支援環境や言語機構があるかないか、の話だと思う。
2013-07-03 00:40:40超でかいもん相手にしてる人の場合は複雑さ要因が多すぎて客観的によくわからんし、「遅くなるわけがない」という人の場合どれくらいの仮定が裏に置かれてるのか客観的によくわからんし、結局あまり客観的な議論になることがないような印象がある
2013-07-03 00:41:49STAMPベンチマークのC版とJava版を走らせた時はJavaの方が平均で20%速くてベンチマークによって最悪-24%最良+170%って感じだった。ただしJavaの方はベンチマークを長く走らせて十分にJITされた後の定常状態のスピード。
2013-07-03 00:42:42そういう言語機構がないと、「Fortranの域に留めておいたソースが本来の姿を取り戻していく。言語機構の欠けた呪縛を解いて、Fortranを超えたメタプログラムに近い存在へと変わっていく」とかそういうことになる (Verilogとかでもかまいません)
2013-07-03 00:43:07@mkasahara なるほど文脈読んでませんでした、すいません・・・、たしかにそうですね、最近だと下手にインライン化するとμopキャッシュから溢れるとか変な地雷踏みますからね
2013-07-03 00:43:20……と思いましたが,限られた貴重な資源を浪費するのは人間に許された特権やっっっ!!! バンバン浪費やっっっ!!! 人間の能力のすべてを費やしてケモミミ画像蒐集やっっっ!!!
2013-07-03 00:44:27まー、プラットフォームはメインフレームで、Cの方はXL C、Javaの方はJ9/TR、というあらゆるものが特殊な環境だが。
2013-07-03 00:45:27WebKit とかそもそもレイテンシ重視のアプリなので、スループットしか出ない JIT の効果をどうこう議論する対象としては良くないのではないのか。
2013-07-03 00:45:57「C++ の域に留めておいたソースが本来の姿を取り戻していく.言語機構の欠けた呪縛を解いて, C++ を超えたメタプログラムに近い存在へと変わっていく」あ……れ? 違和感が仕事をしていない……?
2013-07-03 00:46:38「ふつーに設計して書いたらそんなん起きるわけないって」 v.s. 「いやそれ現実的には不可避なこと多いし」的な。話のレイヤーが違うような感じ
2013-07-03 00:47:36