Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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_Performance - Fatal编程技术网

Java 测试某些代码的性能/效率的通用方法?

Java 测试某些代码的性能/效率的通用方法?,java,performance,Java,Performance,有谁能告诉我一种方法,可以确定我写的程序的效率,这不是特定于一台计算机。例如,在i3上运行的一段代码可能需要1秒,但在i7上可能需要0.95秒。然后,如果您再次测试该程序,如果计算机正在做更多的工作,则时间可能会分别增加到1.0001和0.950003。我想要一种测量效率的方法,在所有拱门上都是一样的。这(数学上)可能吗 我想要一种测量效率的方法,在所有拱门上都是一样的 在同一台机器上,使用相同的代码和相同版本的Java以相同的CPU速度运行时,不会得到完全相同的数字 您不可能希望在不同的体系结

有谁能告诉我一种方法,可以确定我写的程序的效率,这不是特定于一台计算机。例如,在i3上运行的一段代码可能需要1秒,但在i7上可能需要0.95秒。然后,如果您再次测试该程序,如果计算机正在做更多的工作,则时间可能会分别增加到1.0001和0.950003。我想要一种测量效率的方法,在所有拱门上都是一样的。这(数学上)可能吗

我想要一种测量效率的方法,在所有拱门上都是一样的

在同一台机器上,使用相同的代码和相同版本的Java以相同的CPU速度运行时,不会得到完全相同的数字

您不可能希望在不同的体系结构中获得相同的数字,因为Java、CPU、速度、负载和操作系统的版本不同


简而言之,你的问题在任何真正的机器上都是不可能的。只有理论上的原因,这就是为什么big-O代表理论机器(并且是从代码中推导出来的,不是测量的)

您可以测量CPU时钟周期。不幸的是,我不知道Java是如何做到这一点的。很难理解您真正想要的是什么。您可以确定工作的数量级,并用大O表示法表示,也可以只进行一些计时。理解其他计算机负载会有多大的影响将是非常棘手的。事实上,在现实生活中,所花费的时间几乎从来不会随着输入的大小以一种很好的连续方式进行缩放。特别是缓存效应通常会导致一个或多个大的中断。你经常看到的描述现实生活中某事物表现的是对数刻度上的散点图,或是对数刻度上的一条线。我不记得旧的大O(对于那些不知道的人来说,渐近符号或增长顺序)。