Aynı anda birden fazla vadeli çalışan bir scala kodum var. Her birini yürütmek için harcanan zamanı profillemek istiyorum. runAndTime
bir naif uygulama olabilirScala'da geleceğe harcanan zaman nasıl bulunur?
for (i <- 1 to 100) {
val f = future { runAndTime(doSomething()) }
f.onComplete {
case Success(timeTaken) => println(timeTaken)
case Failure(t) => println(t.getMessage())
}
}
: Örneğin
def runAndTime(func: => Unit) = {
var time = System.currentTimeMillis()
func
System.currentTimeMillis() - time
}
sorun bu runAndTime
ile iplik olduğunda bunun fonk ortasında ise eg (yürütme değil yani cpu dequeued ve başka bir iş parçacığı çalışmaya başladı. sistem hala geçen zaman, bu yüzden biz o iş parçacığı için harcanan zaman almaz ama iş parçacığı başlangıç ve iş parçacığı arasındaki genel zaman farkı.
runAndTime
'u nasıl yazabilirim, bu da geleceğin gerçekten CPU'da çalıştığı zamanı sayar?