【发布时间】:2015-11-17 18:31:32
【问题描述】:
如何在不提供非常大的数组作为输入的情况下实现它?我正在测量不同算法的运行时间,对于包含 20 个元素的数组,我得到了非常(相同)相似的值。我尝试将总时间除以 1000000000 以清除 E,然后像 16 个镜像一样使用我复制输入数组并再次为镜像执行它。但是对于堆排序和快速排序仍然是一样的。有什么想法不需要写多余的行吗?
样本输出:
Random array:
MergeSort:
Total time 14.333066343496
QuickSort:
Total time 14.3330663435256
HeapSort:
Total time 14.3330663435256
如果您需要代码 sn-ps,请通知我。
【问题讨论】:
-
呃...为什么不用更大的数组进行测试呢?即使是微基准测试,您也需要超过一定的执行时间阈值。
-
请填写邮政编码 sn-ps - 谢谢。
-
System.nanoTime()的粒度是System.currentTimeMillis()的 1000000 倍。 -
@Andreas 我很确定这是特定于操作系统的,但为了准确,来自 Oracle 的 Java API:
This method provides nanosecond precision, but not necessarily nanosecond accuracy,但无论如何它可能是最准确的东西 -
@Andreas 这通常不是真的:docs.oracle.com/javase/8/docs/api/java/lang/…
标签: java performance sorting time