私のテストでは、それ以外の場合が示されています。たとえば、stackoverflow.com GET リクエストを 10 回以上繰り返します。
画像からわかるように (または見えない場合もあります)、jmeter を で使用した場合の平均時間は 712 ミリ秒View Results in a Table
です。このリスナーは、リクエストの統計情報だけを出力するのではなく、レスポンスの本文を出力することに注意してください。
そして、ここにJavaからの私のコードがあります:
public static void main(String[] args) throws Exception{
long totalTimeMS = 0;
for (int i = 0; i < 10; i++) {
long startTime = System.currentTimeMillis();
HttpGet get = new HttpGet("http://stackoverflow.com");
HttpClient client = new DefaultHttpClient();
client.execute(get);
long endTime = System.currentTimeMillis();
long duration = (endTime-startTime);
totalTimeMS +=duration;
System.out.format("Duration %d ms\n", duration);
}
System.out.format("Average time is %d ms", (totalTimeMS/10));
}
そのため、レスポンスボディも気にしません。しかし、ここに結果があります(はるかに高速です):
Duration 615 ms
Duration 263 ms
Duration 264 ms
Duration 262 ms
Duration 268 ms
Duration 266 ms
Duration 265 ms
Duration 266 ms
Duration 268 ms
Duration 263 ms
Average time is 300 ms
まだ時間が必要なのでView Results in a Tree
、実際に応答本文と を確認できる場合に使用する jmeter の別のケースです。View Results in a Table
答えが読みにくくなるのでスクリーンショットは添付しませんが、今回の平均時間は812 ms
以前よりも約 100 ミリ秒長くなりました。
応答本文を気にするJavaコード(新しいメソッド):
public static String convertStreamToString(InputStream is) throws IOException {
if (is != null) {
StringBuilder sb = new StringBuilder();
String line;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
} finally {
is.close();
}
return sb.toString();
} else {
return "";
}
}
そして、以前のコードを少し変更して、応答を出力し、jmeter の動作をシミュレートし、関連する部分を投稿しました。
HttpGet get = new HttpGet("http://stackoverflow.com");
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(get);
long endTime = System.currentTimeMillis();
long duration = (endTime-startTime);
totalTimeMS +=duration;
System.out.println(convertStreamToString(response.getEntity().getContent()));
System.out.format("Duration %d ms\n", duration);
結果は次のとおりです。
Duration 678 ms + (including printing of response body)
Duration 264 ms + (including printing of response body)
Duration 269 ms + (including printing of response body)
Duration 262 ms + (including printing of response body)
Duration 263 ms + (including printing of response body)
Duration 265 ms + (including printing of response body)
Duration 262 ms + (including printing of response body)
Duration 267 ms + (including printing of response body)
Duration 264 ms + (including printing of response body)
Duration 264 ms + (including printing of response body)
Average time is 305 ms
応答時間が 増加しました5 ms
。したがって、jmeter が単純な Java コードよりも高速になる方法がわかりません。とにかく、jmeter は本当に優れたツールであり、最高のツールの 1 つです (無料)。