我正在使用一些小型 Java 程序测试我的自定义 Web 服务器,但我得到了一些奇怪的结果。我的起始代码由两部分组成,它们从我的 Web 服务器 HTTP-GET 相同的 URL 一个接一个地连续放置,结果是每个部分的时间性能。正如您所看到的,每个部分的所有内容都相同,但第二部分总是有点慢。
我正在循环中测试这两个部分中的每一个,迭代 100 次并获得平均时间,但第二部分仍然较慢。我想知道为什么会这样?除了执行顺序和性能不同外,相同的代码。这是我的简单代码:
long times1 = 0;
long times2 = 0;
for(int i = 0;i < 100; i++){
long startTime = System.nanoTime();
URL url;
url = new URL("http://127.o.o.1/i");
HttpURLConnection http_Con;
http_Con = (HttpURLConnection)url.openConnection();
http_Con.setInstanceFollowRedirects(false);
http_Con.getResponseCode();
long endTime = System.nanoTime();
times1 += endTime - startTime;
}
System.out.println(times1/100);
for(int i = 0;i < 100; i++){
long startTime = System.nanoTime();
URL url1;
url1 = new URL("http://127.o.o.1/i");
HttpURLConnection http_Con1;
http_Con1 = (HttpURLConnection)url1.openConnection();
http_Con1.setInstanceFollowRedirects(false);
http_Con1.getResponseCode();
long endTime = System.nanoTime();
times2 += endTime - startTime;
}
System.out.println(times2/100);
if (times1/100 < times2/100)
System.out.println("times2 is bigger");
else
System.out.println("times1 is bigger");
System.out.println(times2/100-times1/100);
}
输出1:
32114390812772
32124690872679
times2 is bigger
10300059907
输出2:
32291342784487
32302050988456
times2 is bigger
10708203969
.
.
.
PS:我的网络服务器是基于 Apache 的,我没有对网络或任何与性能相关的部分做任何事情。