如何对Kotlin计划进行基准测试?

时间:2016-03-11 01:09:57

标签: benchmarking kotlin

是否有任何可用的工具可以帮助对Kotlin中的某些代码进行基准测试?

我可以使用类似于此处建议的方法:http://www.ibm.com/developerworks/java/library/j-benchmark1/index.html - 但我想知道是否有任何Kotlin原生工具,所以我不一定要重新发明轮子!

3 个答案:

答案 0 :(得分:7)

使用JMH进行基准测试。该框架可以帮助您编写最相关的基准,并了解JVM的工作原理。 github上有一个旧项目,但我希望你能更新版本并且你很好。

答案 1 :(得分:3)

所有低级基准测试工具都与您用于Java的工具相同,因为字节代码完全相同。

如果用“Kotlin原生工具”表示测量(相对)性能的语法糖,那么stdlib提供measureTimeMillismeasureNanoTime

fun main(args: Array<String>) {
    val benchmark = measureNanoTime {
        // some slow code here
    }
}

由于显而易见的原因,结果可能因运行而异,但它可能有助于估计相对性能。

答案 2 :(得分:3)

以下是Kotlin中的一个简单的微基准测试工具: https://gist.github.com/olegcherr/b62a09aba1bff643a049

用法很简单:

simpleMeasureTest {
  // your code for the benchmark
}

您也可以配置测试,例如:

simpleMeasureTest(ITERATIONS = 1000, TEST_COUNT = 10, WARM_COUNT = 2) {
  // your code for the benchmark
}

运行此代码后,进入控制台。输出将如下所示:

I/System.out: [TimeTest] -> go
I/System.out: [TimeTest] Warming 1 of 2
I/System.out: [TimeTest] Warming 2 of 2
I/System.out: [TimeTest] 770ms
I/System.out: [TimeTest] 784ms
I/System.out: [TimeTest] 788ms
I/System.out: [TimeTest] 881ms
I/System.out: [TimeTest] 802ms
I/System.out: [TimeTest] 794ms
I/System.out: [TimeTest] 789ms
I/System.out: [TimeTest] 786ms
I/System.out: [TimeTest] 750ms
I/System.out: [TimeTest] 762ms
I/System.out: [TimeTest] -> average=790ms / median=788ms

为了让您的生活更轻松,请创建一个新的控制台输出过滤器。 这是我在Android Studio中的过滤器:

enter image description here