Java Junit精确基准测试和复杂性总结

Java Junit精确基准测试和复杂性总结,java,performance,junit,big-o,benchmarking,Java,Performance,Junit,Big O,Benchmarking,我正在使用java,我已经使用junit-benchmarks-0.7.2进行junit性能测试,它在预热、多次运行测试函数和绘制结果方面都很好,我只想问一下在junit benchmark中找不到的两个特性: 1-以毫秒为单位的执行时间并不精确(特别是在绘图中,所以我只绘制了执行时间超过0.1秒的函数的绘图) 2-是否有一个插件可以粗略或准确地估计我代码的复杂性?? 即使它显示了我的代码的性能与O(N^2)或O(N)等情况下的预期性能,或者它是如何计算的??(无论是免费还是付费插件,我只希望有

我正在使用java,我已经使用junit-benchmarks-0.7.2进行junit性能测试,它在预热、多次运行测试函数和绘制结果方面都很好,我只想问一下在junit benchmark中找不到的两个特性: 1-以毫秒为单位的执行时间并不精确(特别是在绘图中,所以我只绘制了执行时间超过0.1秒的函数的绘图)

2-是否有一个插件可以粗略或准确地估计我代码的复杂性?? 即使它显示了我的代码的性能与O(N^2)或O(N)等情况下的预期性能,或者它是如何计算的??(无论是免费还是付费插件,我只希望有一个插件来完成任务)

我猜:

无法修复;将坚持使用毫秒作为默认粒度。如果某人确实需要纳秒级计时,请使用卡尺运行基准测试

这也是我实际上要推荐的,因为对我来说,
junit基准测试
似乎没有那么先进。但我可能错了,因为我没有仔细观察它

您可以编写一个JUnit测试,它也是一个类似于卡尺的基准测试,如果它有帮助的话


关于复杂性估计器,有这样的卡尺计划,但我强烈怀疑是否有人这样做。我想你可以自己做……在几个小时内。我担心,它不会真的有用:它只能推断它看到的东西,可能会有问题,只在测量范围之外表现出来。所以你应该ld最好只进行插值,这样就失去了意义,因为不用工具就可以发现问题。

1)重写测试以延长运行时间。即使在使用nanoTime()调用时,长时间运行也会产生更好的准确性。2) 情不自禁;我从没听说过。3) 在不止一个函数的基础上对Java进行基准测试可能会令人难以置信地沮丧。在大型程序中,尽管允许完全JIT预热和热点稳定等,但我看到20%的运行到运行的性能变化。因此卡钳是问题1的答案,而问题2没有答案谢谢:)