アカウント名:
パスワード:
文字列にあわせて新しい領域をとるために遅いことはわかりますが、Javaのほうが遅いというのは、ヒープ領域が小さすぎて、GCが多数回動いているからでしょうか?
コード見ればわかりますが、毎回書き込みはバッファリング効かせてるんでシステムコールの回数はかなり抑えられてます。一方でメモリ上で結合の方は、Stringで+を使っての結合なので、内部では new StringBuffer(orig).append(str).toString()が毎回走るので遅くて当たり前です。GC以前に「そりゃそうなるよな」としか言いようがないです。
文字列の結合に+を使用しているプログラマーはディスクアクセスが遅いなんてことは気にしないはずなので、メモリ上で処理しようなどとは思ないんじゃなかろうか。結果、直接書きこもうとするのでパフォーマンスの問題は無くなる。めでたしめでたし。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
Javaのヒープ領域 (スコア:2)
文字列にあわせて新しい領域をとるために遅いことはわかりますが、Javaのほうが遅いというのは、ヒープ領域が小さすぎて、
GCが多数回動いているからでしょうか?
Re:Javaのヒープ領域 (スコア:2)
コード見ればわかりますが、毎回書き込みはバッファリング効かせてるんでシステムコールの回数はかなり抑えられてます。
一方でメモリ上で結合の方は、Stringで+を使っての結合なので、内部では new StringBuffer(orig).append(str).toString()が毎回走るので遅くて当たり前です。
GC以前に「そりゃそうなるよな」としか言いようがないです。
Re: (スコア:0)
文字列の結合に+を使用しているプログラマーはディスクアクセスが遅いなんてことは気にしないはずなので、
メモリ上で処理しようなどとは思ないんじゃなかろうか。
結果、直接書きこもうとするのでパフォーマンスの問題は無くなる。
めでたしめでたし。