最後にパターンを持つ非常に長い文字列があり</value>
、いくつかの関数呼び出しのパフォーマンスをテストしようとしているので、答えを見つけるために次のテストを行いました...しかし、nanoTimeを使用している可能性があると思います間違って?いくら順番を入れ替えても結果が意味をなさないので…
long start, end;
start = System.nanoTime();
StringUtils.indexOf(s, "</value>");
end = System.nanoTime();
System.out.println(end - start);
start = System.nanoTime();
s.indexOf("</value>");
end = System.nanoTime();
System.out.println(end - start);
start = System.nanoTime();
sb.indexOf("</value>");
end = System.nanoTime();
System.out.println(end - start);
私は以下を取得します:
163566 // StringUtils
395227 // String
30797 // StringBuilder
165619 // StringBuilder
359639 // String
32850 // StringUtils
どの順序で入れ替えても、数値は常に多少同じになります..どうしたの?
java.sun.com Web サイトの FAQ から:
コード内のさまざまなポイント間で System.nanoTime() を使用して経過時間の測定を実行すると、常に正確になります。
また:
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#nanoTime ()