【发布时间】:2013-12-11 06:36:53
【问题描述】:
我需要分析 Java 中某些算法的复杂性。为此,我计划提供大量输入并测量 Java 实现所花费的时间。检查某些代码行之间的时间的最精确和准确的方法是什么?我需要以毫秒为单位的精度...
【问题讨论】:
-
不完全是!我一直在寻找类似 System.nanoTime() 的东西,但是上面提到的问题更多是关于一些正式的基准测试。它需要一些深度阅读,这可能对普通读者没有帮助。
-
@MangatRai:在这个领域做一个“随便的读者”是很危险的:几乎所有你真的需要“检查一些代码行之间的时间”的情况都是严重受到该问题中讨论的内容的影响。否则,您将获得毫无价值或误导性的数据并做出错误的决定。
-
您的问题与时间复杂度有什么关系?您是否了解时间复杂度是一种静态分析,而您要求进行性能基准测试?
-
@Joachim Saucer 我明白这一点。对于普通读者,我的意思是运行一些快速测试以了解自己的理解。
-
@val 时间复杂度确实是一种静态分析,但我们可以通过性能基准测试来估计它。说在第一次运行时我给出 n 个元素,然后是 2n、3n ......等等。通过根据所用时间绘制图表,我可以得到一个想法,比如复杂性是线性的还是更高的多项式。当然,我们不会得到确切的时间复杂度,但我更多地询问了关于使用一些代码的问题。
标签: java time-complexity