время выполнения с помощью measureTimeMillis - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь сравнить разные времена выполнения для простых блоков кода, но продолжаю возвращать 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!!)}")

1 Ответ

1 голос
/ 09 января 2020

Возможно, попробуйте измерить время в наносекундах:

this.trackLinearTime = measureNanoTime {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...