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