Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Algorithm_Testing - Fatal编程技术网

测量java算法的性能

测量java算法的性能,java,algorithm,testing,Java,Algorithm,Testing,如何有效地衡量java算法的性能?有准确的方法吗 我读了其他类似的问题,但并不满意。 任何帮助都将不胜感激。如果您能使其实用或理论化。如果可行,则在算法开始前放置一个计时器,并在算法结束时停止。如果是理论上的,那么使用(不是那么困难),你会得到它的时间或空间复杂性的估计 long reference=System.nanoTime(); your_funct(); long finishm=System.nanoTime(); System.out.println( ( (double)(fi

如何有效地衡量java算法的性能?有准确的方法吗

我读了其他类似的问题,但并不满意。
任何帮助都将不胜感激。

如果您能使其实用或理论化。如果可行,则在算法开始前放置一个计时器,并在算法结束时停止。如果是理论上的,那么使用(不是那么困难),你会得到它的时间或空间复杂性的估计

long reference=System.nanoTime();
your_funct();
long finishm=System.nanoTime();

System.out.println( ( (double)(finishm-reference) )/1000000000.0);  //in seconds

在我的机器中具有~0.003秒的有效级别。我的意思是,测量单位是纳秒,但在我的机器中最小的步长大约是3000000纳秒。

你可以使用一些分析器。许多IDE(如Netbeans)都有一个。您要求的性能表明某种时间安排。但是你会拿什么来比较呢

测量算法的一般方法是使用大O,它采用简化的数学方法

为了从一个非常基本的层面解释这一点,一个简单的整数列表线性搜索有一个线性(n)最坏情况大o。如: 对于(int i=0;i 在最坏的情况下,这需要i次迭代(通常数字在大o中被称为n),所以我们称之为n或线性复杂度算法

类似于bubblesort算法的东西是循环中的一个循环,所以我们有n*n复杂度=n^2或二次复杂度

long reference=System.nanoTime();
your_funct();
long finishm=System.nanoTime();

System.out.println( ( (double)(finishm-reference) )/1000000000.0);  //in seconds

与类似的比较,如果我们只考虑排序,Quasr排序比二次复杂性更有效(它是n log n复杂度),因此您可以考虑Quask排序比BuffelORT更好,


因此,在评估算法时,请考虑n。有环路吗?有多少越少越好。没有更好的循环-常量大o。

最好的方法仍然是java.lang.System.currentTimeMillis(),因为无论您使用的是哪种IDE,它都可以工作。

您想测量什么?时间复杂度?您可能会发现它很有用。我有eclipse…通过代码,我也认为它在实践中工作得非常糟糕-例如,它不允许JIT编译器运行。很难做到这一点,尤其是对于Java。如果您可以从控制台实时打印一个非常累人的计算序列的结果时间,您可以看到在现实世界中有一个解决方案:我没有使用eclipse。但是测量系统时间可能会给你带来不好的结果。因为你的过程可以暂停。您需要流程使用的时间。是的,我也需要为我的eclipse运行探查器。我有最新版本的eclipse。