よくわかる最適化/よくわからない最適化,の土台

shi3z氏のブログエントリ「よくわかる最適化」,monamour555のブログエントリ「よくわからない最適化」の副読本的まとめ.
0
もなか @monamour555

javac の中身詳しくないけれど,定数を除数とする除算を積算に変えることくらいはするのではないの…? ///よくわかる最適化 http://t.co/RXC9DJ6Ei9

2013-05-02 22:37:19
もなか @monamour555

手元のOSXでjavac試してみた.へぇ.愚直に fdiv 命令出すのか.そして,ベンチマーク取ったら,完全に乗算も除算も誤差範囲だった.JITをオフにしても傾向は変わらない.アーキ次第だろうけれど. RT: @ javac の中身詳しくないけれど,

2013-05-02 23:29:39
もなか @monamour555

「奇をてらわずに真っ当に書いて,処理系に判ってもらいやすくする」と 「処理系にゴマ擦るコードでその場しのぎの速さを得る」とは 根本的に違うんだよね….プロは後者もこなすけれど,後ろめたさを忘れたら,それは危ないサイン. 手動最適化で,デグレードが起きはじめたら破綻のサイン.

2013-05-03 15:02:13
SAKIYAMA Nobuo/崎山伸夫 @sakichan

@monamour555 shi3z さんに直接mentionしてやりとりも若干あったのですが、あれは現状やや古い Android 4.0 から fork して Cortex A8 ベースというちょっと古めアーキテクチャのチップを使ってることから来るバッドノウハウ説が濃厚かな

2013-05-03 15:07:48
SAKIYAMA Nobuo/崎山伸夫 @sakichan

@monamour555 Android 4.2ベースならRenderscript で書いて llvm コンパイラの最適化や実行時のGPUへの割り当てなどの恩恵が受けられる可能性が高いし、Dalvik JIT も Cortex A9/A15 の方が最適化が充実してるはず。

2013-05-03 15:11:20
shi3z @shi3z

.@sakichan @monamour555 あれはバッドノウハウというよりも、ゲーム屋的な最適化の手順をわかりやすく(掛け算はループの外へ、とか)説明した文章です。製品ではコンパイラをいじるくらいならCとインラインアセンブリで書きたいですが、今回は時間がないのでパスです

2013-05-03 15:15:32
もなか @monamour555

@sakichan ええ,4.2ベースなら,そうでしょうね.時間が十分にあるならJIT弄りたいわと思っているだろうなとは想像します.…と書いたところで @shi3z さんから mention 来ました.現代的なCコンパイラやJITが使えるなら不要なテクニックですね.

2013-05-03 15:18:16
shi3z @shi3z

.@monamour555 いやーもっと時間があれば本当にNEONで書きたいです

2013-05-03 15:19:16
shi3z @shi3z

.@monamour555 あと、ICS(4.0)です。だから余計へボいですね。ただ、JBも試したんですけどこのハードと相性が悪いみたいで却って遅くなるのだと現場に聞きました。なのでICSです。全部ゼロから作れたらいいんですけどそれは会社の規模的に不可能ですしねえ

2013-05-03 15:21:49
もなか @monamour555

@sakichan @shi3z 私くらいの雑魚が製品出荷直前の生々しい局所最適化を語っても影響ないでしょうけれど,影響力の大きなブログでみかけると「うわぁ」と思ったりするのでした.特に学生の読者が多いようなので. やめてほしいとかではなく「うわぁ」と.

2013-05-03 15:23:41
もなか @monamour555

.@shi3z なるほど.そうですよね.いろいろチャチャは入れますけれど,基本,応援しています.

2013-05-03 15:27:04
shi3z @shi3z

@monamour555 ありがとうございます。現場の邪魔をしないように頑張りますw

2013-05-03 15:28:23
shi3z @shi3z

.@yamo_o 工場の都合でハードのファームウェアがもの凄い勢いで変わってた(CPUも一回変わったし)ので、最適化が内覧会までに追いつかなかったんですよね。動作させるのがやっとで

2013-05-04 02:15:42