分析Java应用程序时的差异

时间:2015-06-24 15:48:59

标签: java

我试图通过首先在Java中实现算法然后计算不同输入的处理器时间来计算算法的性能。我使用ThreadMXBean.getCurrentThreadCpuTime()来获取系统时间。

我首先使用以下代码对其进行了分析:

calculateProfile() {
   for (int n = 10; n <= 200; n++) {
   long time_beg = getCurrentThreadTime();
   run_my_algorithm(n);
   long time_end = getCurrentThreadTime();
   System.out.println("Output = " + n + " " + (time_end - time_beg));
}

然而,我惊讶地发现随着n值的增加,时间曲线不会像预期的那样增加。在某些情况下,虽然我的算法的时间复杂度为O(n),但执行时间实际上减少了。

为了研究这个问题,我在每次执行时更改了此代码以运行一次算法,并手动检查每个执行实例的时间配置文件。在这种情况下,我发现执行时间相对于n的线性增加。所以我的问题是:两个案例有何不同?什么使配置文件模式有所不同?并且,在这种情况下如何最好地自动化此分析过程?

0 个答案:

没有答案