java中有比currentTimeMillis更准确的或得程序运行时间的方法么?

亡灵S 发布于 2013/07/31 18:51
阅读 1K+
收藏 0

用这个方法来测快速排序的速度,结果发现同一个程序可能连续几次在400多好秒但是却突然跳到800多毫秒了,这样无法准确的对比出两个算法的运行速度了,求解。。

PS:如果没有更好的方法,能不能推荐一个简便的测速度的工具呢,谢谢:)

加载中
0
袁不语
袁不语
1. 如果测试数据是随机的,说不定正好那次随机的测试数据趋近最坏情况O(n^2) 2. JVM执行GC的影响。
袁不语
袁不语
回复 @亡灵S : 是的 呵呵。 主要是因为类似的事情,读大学的时候也做过,也遇到过类似的问题。
亡灵S
亡灵S
居然有又看到你了,谢谢啦:)袁枚+子不语?
1
Michael.Feng
Michael.Feng

你可以就是把程序执行的各个方法里面的开头和结尾都加上统计的时间,然后打印出时间差,算出每个方法执行的时间。分拆开来。

Java里面的话恐怕其他的更准确的就没了。因为getCurrentTimeMillis已经是最大精度了

亡灵S
亡灵S
你让我想到了可以将他们放在一起来比较,谢谢!PS:System.nanoTime()纳米级别的。
1
cokolin
cokolin

System.nanoTime();

纳秒级别,别无它求!

亡灵S
亡灵S
好办法,谢谢你!
1
南湖船老大
南湖船老大

System.nanoTime();

纳秒级别,是调用QueryPerformanceFrequency API,这个API是硬件提供支持的,精度是硬件级别的,非常可靠。没有比这个函数更精确的了

亡灵S
亡灵S
谢谢,确实可以!
0
guor
guor
试试用perf4j监控
亡灵S
亡灵S
谢谢,但这个貌似对我而言太深奥了orz
返回顶部
顶部