Java 测试代码以获取调用的平均时间
这是我的代码,我试图通过在其中传递ipAddress来测试调用getLocationIp方法的平均时间。我所做的是,生成一些随机的IP地址,并将其传递给getLocationIp,然后计算时间差。然后将其放入HashMap中,并进行计数。在沃兹之后,我要先看散列图 实际计数是多少。所以这是测试这个的正确方法?或者还有别的办法。因为在我的例子中,我不确定我的GeneratePaddress方法是否每次都生成随机IP地址。在进入循环之前,我还有一个开始的总时间,然后在完成所有事情之后,有一个结束的总时间。这样我就可以计算平均时间了Java 测试代码以获取调用的平均时间,java,Java,这是我的代码,我试图通过在其中传递ipAddress来测试调用getLocationIp方法的平均时间。我所做的是,生成一些随机的IP地址,并将其传递给getLocationIp,然后计算时间差。然后将其放入HashMap中,并进行计数。在沃兹之后,我要先看散列图 实际计数是多少。所以这是测试这个的正确方法?或者还有别的办法。因为在我的例子中,我不确定我的GeneratePaddress方法是否每次都生成随机IP地址。在进入循环之前,我还有一个开始的总时间,然后在完成所有事情之后,有一个结束的总
long total = 10000;
long found = 0;
long found_country = 0;
long runs = total;
Map<Long, Long> histgram = new HashMap<Long, Long>();
try {
long start_total = System.nanoTime();
while(runs > 0) {
String ipAddress = generateIPAddress();
long start_time = System.nanoTime();
resp = GeoLocationService.getLocationIp(ipAddress);
long end_time = System.nanoTime();
long difference = (end_time - start_time)/1000000;
Long count = histgram.get(difference);
if (count != null) {
count++;
histgram.put(Long.valueOf(difference), count);
} else {
histgram.put(Long.valueOf(difference), Long.valueOf(1L));
}
runs--;
}
long end_total = System.nanoTime();
long finalTotal = (end_total - start_total)/1000000;
float avg = (float)(finalTotal) / total;
Set<Long> keys = histgram.keySet();
for (Long key : keys) {
Long value = histgram.get(key);
System.out.println("$$$GEO OPTIMIZE SVC MEASUREMENT$$$, HG data, " + key + ":" + value);
}
如果您有任何建议,我们将不胜感激。通常,当您对要多次运行的函数进行基准测试时,并对结果进行平均,这样可以更清楚地指示程序将在这些函数中花费的实际时间,考虑到您很少关心只运行一次的函数的性能。这样做有效吗?它坏了吗?如果是这样的话,哪部分坏了?它正在工作,只需要确保我所做的是正确的方式。如果有更好的方法?为什么要继续打印生成的IP地址,那么您可以确认这些地址是否正在生成。如果您确认了这一点,那么您可以检查是否正确生成了平均时间IP地址。我只是想确定,还有什么更好的方法可以测试这个问题。我不是基准测试专家,但在开始测量之前,您应该运行它几次。JIT代表即时编译。
private String generateIPAddress() {
Random r = new Random();
String s = r.nextInt(256) + "." + r.nextInt(256) + "." + r.nextInt(256) + "." + r.nextInt(256);
return s;
}