私はHTMLストリッパー(Javaで書かれた)のいくつかのパフォーマンステストを行っています、つまり、実際にHTMLコンテンツを文字列(HTMLストリッパー )に渡し、後者はプレーンテキストを返しますおよびメタ情報)。ここ メソッド呼び出しのjvmキャッシュ?
毎回200回計算される具体的な実装
public void performanceTest() throws IOException {
long totalTime;
File file = new File("/directory/to/ten/different/htmlFiles");
for (int i = 0; i < 200; ++i) {
for (File fileEntry : file.listFiles()) {
HtmlStripper stripper = new HtmlStripper();
URL url = fileEntry.toURI().toURL();
InputStream inputStream = url.openStream();
String html = IOUtils.toString(inputStream, "UTF-8");
long start = System.currentTimeMillis();
String text = stripper.getText(html);
long end = System.currentTimeMillis();
totalTime = totalTime + (end - start);
//The duration for the stripping of each file is computed here
// (200 times for each time). That duration value decreases and then becomes constant
//IMHO if the duration for the same file should always remain the same.
//Or is a cache technique used by the JVM?
System.out.println("time needed for stripping current file: "+ (end -start));
}
}
System.out.println("Average time for one document: "
+ (totalTime/2000));
}
しかし、各ファイルのストリッピングのための期間の例であり、異なる減少値を有します。同じファイルXの継続時間が常に同じになる必要がある場合はIMHO !?または、JVMで使用されるキャッシュ手法ですか?
ご協力いただければ幸いです。事前に おかげ
ホレス
はN.B: - 私は私のマシン上でローカルテスト(NOリモート、NO HTTP)を行っています。 - 私はUbuntu 10.04でJava 6を使用しています
[Google Caliper](http://code.google.com/p/caliper/)のようなマイクロベンチマーキングフレームワークが存在していますが、そのような初期化を行うのに役立ちますが、まだ書くことについては賢明でなければなりませんベンチマークそのもの。キャリパー自体はまだ少し生のままですが、私はそれが非常に有用であることを発見しました。私は他のベンチマークフレームワークも存在すると確信しています。 –
FYI、Caliperはあまりにも遠くない将来、srs bsnsのリリースに向けて準備中です。 –
大変ありがとうございます。それは全体を説明します:-) – Horace