S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

最適化

最適化/フィールドアクセスのオーバヘッド
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/OptFieldAccess.html
JDK1.1.4らしいけど、「同じオブジェクト変数、スタティック変数を頻繁にアクセスするメソッ ドでは値をローカル変数に移してから操作を行う」って、なんかそんな話っぽい?
メソッド内で使用する変数の数はできるだけ3つ以内にする」ってな話もあるのか。


Javaプログラムの最適化
http://www.shudo.net/article/JavaWorld-200009-optimization/
privateメソッドの方が早いのか。


Javaの道 > Java基本 > クラス −4.メンバ変数
http://www.javaroad.jp/java_class4.htm
"volatile"って、「メンバ変数に対して、コンパイラが何らかの最適化を施すことを防止します。 」ってこれ付けたらよかったりして?


Java用語集:volatile
http://sjc-p.obx21.com/word/ev/volatile.html
そういうことね。

Java では生成されたすべてのスレッドは メインメモリ を共有しますが、処理の最適化などの理由で、メインメモリの内容を個々のスレッドが保持している 作業メモリにコピーして処理を行うことがあります。

このため 作業メモリ と メインメモリ の間で不整合が生じる可能性があり、もしその変数が複数のスレッドからアクセスされるような場合には、値の参照が正しく行われない可能性があります。

こうした不整合が生じるのを防ぐためにJavaではvolatileという修飾子が用意されています。

このvolatile修飾子をつけて変数を宣言すれば、その変数については複数のスレッドからアクセスされても内容が同期されることが保障されます。

作業メモリってのがキャッシュっぽい動きするんか。
明日試してみよ。
って、staticな変数とvolatileの関係はどうなんじゃろ?


まだまだJavaとマルチスレッドなスキルが足りんと見える…


Javaの理論と実戦: Javaメモリ・モデルを修正する 第1回
http://www-06.ibm.com/jp/developerworks/java/040416/j_j-jtp02244.html
Javaの理論と実戦: Javaメモリ・モデルを修正する 第2回
http://www-06.ibm.com/jp/developerworks/java/040514/j_j-jtp03304.html
「JSR 133はvolatileの意味体系を大幅に強化しました。その結果、別のスレッドによってプログラムの状態が変更されたことを示すフラグとして、volatileフラグを安心して使えるようになりました。」ってことで、Javaメモリモデル(JMM)ってなものが仕様としてあって、なんとなく判ってスッキリ。というか、ある意味予想通り?
最適化ってどこも同じようなことやっとるな…
涙ぐましい努力とでも言おうか…