如何衡量执行的操作数量

时间:2012-06-03 17:43:10

标签: java profiling complexity-theory

在我目前的项目中,我正在测量用Java编写的算法的复杂性。我使用渐近复杂度(预期结果)进行操作,并且我想通过与实际操作数进行比较来验证期望值。在每次操作中使用增量似乎对我来说有点笨拙。有没有更好的方法来衡量运营的复杂性?

由于


修改:更多信息

  • 算法可能在不同的机器上运行
  • 分裂和征服算法的某些部分可能会被预先处理,因此可能会比预期更快的程序
  • 同样重要的是要找出乘法常数(或加法常数),这在渐近复杂度中不予考虑

3 个答案:

答案 0 :(得分:2)

有没有特别的理由不测量CPU时间?时间实用程序或分析器将为您提供数字。只需使用足够的输入范围运行每个算法,并捕获花费的CPU时间(而不是挂钟时间)。

答案 1 :(得分:1)

在想要测量执行时间的实际计算机上,getCurrentTimeMillis()。改变N参数,得到可靠的统计数据。做错误估计。你的基本最小二乘会没问题。

对算法进行计数操作很好,但使用有限。不同的处理器以不同的速度运行。计算由实现的算法执行的表达式或语句的数量几乎是无用的。在算法中,您可以使用它来进行调整比较,在您的实现中不再是这种情况,编译器/ JIT // CPU技巧将占主导地位。

如果做好测量,渐近行为应该非常接近计算/预期。

答案 2 :(得分:1)

ByCounter可用于检测Java(跨多个类)并计算JVM在运行时执行的字节码数。