Kotlin 使用measureTimeMillis的运行时

Kotlin 使用measureTimeMillis的运行时,kotlin,Kotlin,我试图比较简单代码块的不同运行时,但继续返回0。我可以做些什么来获得更好的执行时间近似值 private var trackConstantTime: Long? = null this.trackConstantTime = measureTimeMillis { /* determine if a given number is even or odd */ var n = (0..(Int.MAX_VALUE)).random() if(n % 2 == 0) "Even" else

我试图比较简单代码块的不同运行时,但继续返回0。我可以做些什么来获得更好的执行时间近似值

private var trackConstantTime: Long? = null
this.trackConstantTime = measureTimeMillis {
 /* determine if a given number is even or odd */
 var n = (0..(Int.MAX_VALUE)).random()
 if(n % 2 == 0) "Even" else "Odd"
}
println("O(1), Constant Time for fxConstantTime(...):${TimeUnit.MILLISECONDS.toSeconds(trackConstantTime!!)}")
类似地,如果我附加另一个示例,该示例在运行时返回0

private var trackLinearTime: Long? = null
private var uL: MutableList<Int> = mutableListOf()
for(i in 0..100){
 this.uL.add( ((0)..(100)).random() )
}
this.trackLinearTime = measureTimeMillis { 
 /* determine the maximum value in an unsorted array */
 var max: Int = 0
 for(i in 0 until uL.size) {
  if (uL[i] > max) max = uL[i]
  println(max)
 }
}
println("O(n), Linear Time for fxLinearTime(...):${TimeUnit.MILLISECONDS.toSeconds(trackLinearTime!!)}")
private var trackLinearTime:Long?=无效的
私有变量uL:MutableList=mutableListOf()
对于(0..100中的i){
此.uL.add((0)…(100)).random()
}
this.trackLinearTime=measureTimeMillis{
/*确定未排序数组中的最大值*/
var max:Int=0
用于(i在0中直到uL尺寸){
如果(uL[i]>max)max=uL[i]
println(最大值)
}
}
println(“O(n),fxLinearTime(…)的线性时间:${TimeUnit.millides.toSeconds(trackLinearTime!!)}”)

可能尝试以纳秒为单位测量时间:

this.trackLinearTime = measureNanoTime {
    ...
}

很不错的。这起作用了。非常感谢。你是否也知道为什么测量仪不起作用?无论哪种方式,我都会将其标记为已接受的答案。thanks1ms=1000ns,所以可能以毫秒为单位的时间太小了。有趣的是,我还应该提到,如果我偶然发现
TimeUnit.millides.toSeconds(…)
不能正确转换为任何其他值,它将返回0,我确实怀疑,因为我们处理的是非常小的数字。使用组合MeasureNodeName作为块函数,并将输出作为
TimeUnit.millizes.toSeconds(…)
将产生一个结果。但结果将是错误的,因为您使用的是纳秒而不是毫秒。:)你处理的是非常小的数字是的,它会产生一个结果,不是一个正确的结果,但无论如何,它会产生一个结果。当我得到正确的转化率时,我会更新帖子。如果你有任何其他建议,请告诉我。谢谢:)请注意,在尝试编写微基准时,存在许多问题。请参阅。@gidds您为Kotlin推荐的任何库?这是一个有趣的小项目顺便说一句。看看我链接的问题。(我自己没有做过。但每当讨论这个问题时,标准的建议似乎是:不要自己动手,因为这很难做到正确。)感谢大家分享这一点,如果你想看看我在这个小项目中的工作,请看一看,这一点都不奇怪,但作为一个学习工具,它很有帮助。我还想问,是否有更现代的微观基准标准?我注意到他11岁。