【发布时间】:2021-02-24 22:53:54
【问题描述】:
这是我的代码
fun main() {
val list1 = listOf("channel_name", "timestamp_us", "column_3", "column_4", "channel_name", "timestamp_us", "column_3", "column_4")
val start = System.nanoTime()
list1.joinToString(prefix = "(", postfix = ")")
val end = System.nanoTime()
print(end - start)}
而且产量远远超过 1,000,000。通常在 8,000,000 左右。 但是,如果我将代码更改为:
fun main() {
val list1 = listOf("channel_name", "timestamp_us", "column_3", "column_4", "channel_name", "timestamp_us", "column_3", "column_4")
val list2 = listOf("channel_name", "timestamp_us", "column_3", "column_4", "channel_name", "timestamp_us", "column_3", "column_4")
list1.joinToString()
val start = System.nanoTime()
list2.joinToString(prefix = "(", postfix = ")")
val end = System.nanoTime()
print(end - start)}
输出通常为 15,000。
那么,谁能解释一下为什么第一个代码的输出是第二个代码的 600 倍?
我的电脑是 MacBook Pro(16 英寸,2019 年),
jdk 是 jdk1.8.0_251,
在 IntelliJ IDEA 2020.2.2(社区版)中运行的代码
Kotlin 插件版本为 1.4.10
【问题讨论】:
-
样本量似乎太小而无法获得有意义的结果。请看Whit is microbenchmarking?