Added samples for the kotlin.system package (measureTime* functions)
Co-authored-by: Ilya Gorbunov <ilya.gorbunov@jetbrains.com>
This commit is contained in:
committed by
Ilya Gorbunov
parent
15381c4662
commit
f48f7c6dca
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -10,6 +10,8 @@ import kotlin.contracts.*
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the given [block] and returns elapsed time in milliseconds.
|
* Executes the given [block] and returns elapsed time in milliseconds.
|
||||||
|
*
|
||||||
|
* @sample samples.system.Timing.measureBlockTimeMillis
|
||||||
*/
|
*/
|
||||||
public inline fun measureTimeMillis(block: () -> Unit): Long {
|
public inline fun measureTimeMillis(block: () -> Unit): Long {
|
||||||
contract {
|
contract {
|
||||||
@@ -22,6 +24,8 @@ public inline fun measureTimeMillis(block: () -> Unit): Long {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the given [block] and returns elapsed time in nanoseconds.
|
* Executes the given [block] and returns elapsed time in nanoseconds.
|
||||||
|
*
|
||||||
|
* @sample samples.system.Timing.measureBlockNanoTime
|
||||||
*/
|
*/
|
||||||
public inline fun measureNanoTime(block: () -> Unit): Long {
|
public inline fun measureNanoTime(block: () -> Unit): Long {
|
||||||
contract {
|
contract {
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package samples.system
|
||||||
|
|
||||||
|
import samples.*
|
||||||
|
import kotlin.system.*
|
||||||
|
|
||||||
|
class Timing {
|
||||||
|
|
||||||
|
@Sample
|
||||||
|
fun measureBlockTimeMillis() {
|
||||||
|
val numbers: List<Int>
|
||||||
|
val timeInMillis = measureTimeMillis {
|
||||||
|
numbers = buildList {
|
||||||
|
addAll(0..100)
|
||||||
|
shuffle()
|
||||||
|
sortDescending()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// here numbers are initialized and sorted
|
||||||
|
assertPrints(numbers.first(), "100")
|
||||||
|
|
||||||
|
println("(The operation took $timeInMillis ms)")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Sample
|
||||||
|
fun measureBlockNanoTime() {
|
||||||
|
var sqrt = 0
|
||||||
|
val number = 1000
|
||||||
|
val timeInNanos = measureNanoTime {
|
||||||
|
while (sqrt * sqrt < number) sqrt++
|
||||||
|
}
|
||||||
|
println("(The operation took $timeInNanos ns)")
|
||||||
|
println("The approximate square root of $number is between ${sqrt - 1} and $sqrt")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user