Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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_Language Agnostic_Benchmarking_Timing - Fatal编程技术网

Java 当为一种方法计时(以确定效率)时,用户的输入和输出是否应包括在时间中?

Java 当为一种方法计时(以确定效率)时,用户的输入和输出是否应包括在时间中?,java,language-agnostic,benchmarking,timing,Java,Language Agnostic,Benchmarking,Timing,如果我想测试一个方法返回的速度,我应该包括它的输出吗?比如说 public static void fizzBuzz2(int n) { for(int i = 1; i <= n; i++) { if(i % 3 == 0 && i % 5 == 0) System.out.println("FizzBuzz"); else if(i % 3 == 0

如果我想测试一个方法返回的速度,我应该包括它的输出吗?比如说

public static void fizzBuzz2(int n)
    {
        for(int i = 1; i <= n; i++)
        {
            if(i % 3 == 0  && i % 5 == 0)
                System.out.println("FizzBuzz");
            else if(i % 3 == 0)
                System.out.println("Fizz");
            else if(i % 5 == 0)
                System.out.println("Buzz");
            else
                System.out.println(i);
        }
    }
publicstaticvoidfizzbuzz2(intn)
{

对于(inti=1;i来说,将处理时间存储在一个变量中,然后将其保存到一个文件中,这样您就不必担心写入它所需的额外时间。
根据这里的一些评论,我不确定您想要的精度级别,但是一个简单的
long start=System.currentTimeMillis()
在流程开始之前,从完成时的第二个时间戳中减去该时间戳会给您一个好主意。您可以在捕获结束时间后进行文件保存和输出

这一切都取决于您试图测量的内容。微基准测试在Java中非常复杂,因为所有优化可能会发生,也可能不会发生en在运行时,GC等。如果你对基准测试很认真,那么就去找JMH和JBnize。如果我有一个完全不同的FizzBuzz实现,我想知道哪个更快。我知道FizzBuzz是一个很愚蠢的例子,但是假设你有一个程序,它打印了从2到n的主要因子。你会计算输出吗(或者只是注释掉输出)?正如我所说,这取决于你试图衡量的是什么。如果生成输出是重要的,那么你一定要衡量它,因为一个实现在生成输出时可能比另一个慢。如果算法的效率是你想要衡量的,那么让算法返回输出而不是编写输出,一个d确保两个实现使用相同的方式日期结构来生成返回值。@JBNizet我在某种程度上认为它取决于特定的系统输出所需的时间,例如,将文件写入SSD与HD。但我想这在比较时无关紧要,因为在同一个系统上,所有输出所需的时间都是相同的。为什么一直说这取决于我想测量什么?我没有说清楚吗?@Celeritas:没有。你想知道“哪种实现更快”。这是一个让你决定是否应该包括输出时间的问题。