在我目前的项目中,我正在测量用Java编写的算法的复杂性。我使用渐近复杂度(预期结果)进行操作,并且我想通过与实际操作数进行比较来验证期望值。在每次操作中使用增量似乎对我来说有点笨拙。有没有更好的方法来衡量运营的复杂性?
由于
修改:更多信息
答案 0 :(得分:2)
有没有特别的理由不测量CPU时间?时间实用程序或分析器将为您提供数字。只需使用足够的输入范围运行每个算法,并捕获花费的CPU时间(而不是挂钟时间)。
答案 1 :(得分:1)
在想要测量执行时间的实际计算机上,getCurrentTimeMillis()。改变N参数,得到可靠的统计数据。做错误估计。你的基本最小二乘会没问题。
对算法进行计数操作很好,但使用有限。不同的处理器以不同的速度运行。计算由实现的算法执行的表达式或语句的数量几乎是无用的。在算法中,您可以使用它来进行调整比较,在您的实现中不再是这种情况,编译器/ JIT // CPU技巧将占主导地位。
如果做好测量,渐近行为应该非常接近计算/预期。
答案 2 :(得分:1)
ByCounter可用于检测Java(跨多个类)并计算JVM在运行时执行的字节码数。