Javaパフォーマンス系の話

@torazuka さん @nagise さん @j5ik2o さん @daisuke_m さん の話を中心にメモリました。後で整理します
2
加藤潤一(かとじゅん) @j5ik2o

Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して http://ff.im/yscuk

2011-02-21 03:05:07
なぎせ ゆうき @nagise

向かい側でJavaの文字コードの扱いについて議論してるが、基本的な理解がなっちゃないので不毛な議論になってる。DBがSJISだからHTMLどうすんのとか言ってるなあ

2011-02-21 14:43:42
なぎせ ゆうき @nagise

String#getBytes()のときの文字コードとかjavadocに明確に書いてあるんだが…。向かいでは挙動を確認しましょうって話してる。javadoc読まない人が多過ぎる

2011-02-21 14:56:10
Daichi @normalian

「StringBufferを使う理由(StringBuilderを使わない理由)はスレッドセーフを考慮しているからです」とか聞いたことないですね。

2011-02-21 16:37:01
close_yutori @kimukou2628

@normalian 疑問に思っているのがsyncronized宣言有関数内の StringBuilder文字列連結と無関数内のStringBuffer文字列連結どっちが良かなと。+連結は一度StringBuffer関数接続にコンパイラ直すので遅いといは聞いた事有るのですけど

2011-02-21 16:42:49
++C++; // 管理人: 岩永 @ufcpp

@normalian Builderの付かないStringがimmutableなのを指して「スレッドセーフ」がどこかで曲解されてる?

2011-02-21 16:44:53
Daichi @normalian

@kimukou_26 原則はStringBuilderそのまま使ってて問題あるケースは見たこないと思っています。安全さを取りたいなら素直にsyncronized使った方が良いかなぁとか思ったりします…、が自信が…(汗

2011-02-21 16:45:33
Daichi @normalian

@ufcpp サーセン、StringBuilderやらStringBufferやらはJavaの話をしてました…。という意図ではなく?

2011-02-21 16:47:06
なぎせ ゆうき @nagise

@kimukou_26 @normalian メソッドがsynchronizedである必要があっても、StringBuilderでいいケースがほとんどですね

2011-02-21 16:51:00
close_yutori @kimukou2628

@normalian 以前コードで、クラス内のグローバル変数な形で volatile StringBuilder sb っていうコード見た事有るんですけど<汗 @j5ik2o さんの http://goo.gl/NUOOp 読んでるとこの場合はstaticの方が良いかと思う事も

2011-02-21 16:51:27
++C++; // 管理人: 岩永 @ufcpp

@normalian JavaのStringって書き換え可能?なら、他の言語と混同して言ってるとかは?<Builderは云々。にしても変だけど。

2011-02-21 16:52:56
++C++; // 管理人: 岩永 @ufcpp

@normalian http://bit.ly/eWCP9F やっぱJavaでも文字列って不変よね。「不変であるため、共用することができます」。

2011-02-21 16:54:06
なぎせ ゆうき @nagise

メソッド内のローカル変数なら同期は不要だし、フィールドの場合はStringBufferにしたところでほとんど問題が解決することはない

2011-02-21 16:54:35
なぎせ ゆうき @nagise

複数のスレッドから単一のStringBufferのインスタンスを同時に編集する、と言う極レアな状況以外は常にStringBuilderを使うと思っていい。Bufferは忘れていい

2011-02-21 17:01:05
++C++; // 管理人: 岩永 @ufcpp

@normalian あっ、Java内にBuilderとBufferっていう2つのクラスがあるのね・・・

2011-02-21 17:04:28
torazuka @torazuka

「同じ処理を数千回繰り返し実行するとJVMによる最適化が始まる」という言説のソース探しちる。

2011-02-21 17:06:43
torazuka @torazuka

ソースは両方の意。言説の根拠たりうるソースコード、の意。

2011-02-21 17:06:55
torazuka @torazuka

あ、実行時の最適化なんだからコンパイラ関係ないよねと思ってたけど、まさに動的コンパイルしとるとこ見ればいいのか、もしや。

2011-02-21 17:08:41
なぎせ ゆうき @nagise

たしか @nekop がOpenJDKのソース読めって言ってた QT @torazuka 「同じ処理を数千回繰り返し実行するとJVMによる最適化が始まる」という言説のソース探しちる。

2011-02-21 17:12:39
torazuka @torazuka

Javaの理論と実践: 動的コンパイルとパフォーマンス測定 http://htn.to/v4QrV2

2011-02-21 17:13:53
なぎせ ゆうき @nagise

JITかかる条件は結構複雑で分岐があるときは網羅的にコードを通過しないと無駄な同期を外すとかの最適化が掛からないとかなんとか

2011-02-21 17:16:07
torazuka @torazuka

@nagise ぐはぁ。ありがとうございます。

2011-02-21 17:19:13
Daichi @normalian

なるほど、やはりっすね。有難うございます。 RT @nagise: @kimukou_26 normalian メソッドがsynchronizedである必要があっても、StringBuilderでいいケースがほとんどですね

2011-02-21 17:20:48
Daichi @normalian

ですー。1.4系までBufferしか有りませんでした RT @ufcpp: normalian あっ、Java内にBuilderとBufferっていう2つのクラスがあるのね・・・

2011-02-21 17:21:11
torazuka @torazuka

ビルドした後、依存関係の解決でハマって、逃げ出したツケが今・・・

2011-02-21 17:25:15
1 ・・ 39 次へ