Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试代码以获取调用的平均时间_Java - Fatal编程技术网

Java 测试代码以获取调用的平均时间

Java 测试代码以获取调用的平均时间,java,Java,这是我的代码,我试图通过在其中传递ipAddress来测试调用getLocationIp方法的平均时间。我所做的是,生成一些随机的IP地址,并将其传递给getLocationIp,然后计算时间差。然后将其放入HashMap中,并进行计数。在沃兹之后,我要先看散列图 实际计数是多少。所以这是测试这个的正确方法?或者还有别的办法。因为在我的例子中,我不确定我的GeneratePaddress方法是否每次都生成随机IP地址。在进入循环之前,我还有一个开始的总时间,然后在完成所有事情之后,有一个结束的总

这是我的代码,我试图通过在其中传递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;

    }