[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 10097] Re: Java 言語で学 ぶデザインパターン入門第 6 回議事録



  高橋(智)です。

snip
> ・synchronizedがないappendは本当に速いのか?
> がありますが、気がむけばしらべてみたいと思います。
snip

  以下に書いた java.lang.StringBuffer と 自作の CustomStringBuffer では、
append(String) するのは CustomStringBuffer のほうが速いのですが、
Stringを取得する際に CustomStringBuffer がとても遅くなるようです。

  String を返す toString()メソッドの実装と、java.lang.Stringクラスのコンス
トラクタに秘密があるようです。
  CustomStringBuffer が使用している
    public String(char value[], int offset, int count)
というコンストラクタは、引数チェックとchar配列のコピーがある分だけ遅いよう
です。(^^;

-------------------------------------------------------------------
public final class StringBuffer implements java.io.Serializable {
  private char value[];
  private int  count;
  private boolean shared;

  public synchronized StringBuffer append(String str) {
    ...
    ...
  }

  public String toString() {
    return new String(this);
  }
}

class CustomStringBuffer {
  private char value[];
  private int  count;

  public void append(String str) {
    ...
    ...
  }

  public String toString() {
    return new String(value, 0, count);
  }
}
-------------------------------------------------------------------


-- 
高橋智宏
  Java読書会( http://www.t3-jpn.com/bof/ )
  T3-Japan( http://www.t3-jpn.com/ )