为什么Kotlin中Iterable.sum()性能远低于手动for循环求和?
Kotlin中Iterable.sum()与手动for循环的性能惊人差异
最近在做性能测试时,我意外发现Kotlin里Iterable.sum()和手动编写的for循环求和之间,存在着大到离谱的性能差距——前者的运行速度居然比后者慢了足足10倍!
测试代码
我用这段代码来对比两者的性能表现:
import kotlin.system.measureTimeMillis fun main(args: Array<String>) { var sink = 0; repeat(5) { println(measureTimeMillis { var sum = 0 for (i in 1..10_000_000) { sum += i } sink += sum }) } repeat(5) { println(measureTimeMillis { sink += (1..10_000_000).sum() }) } }
测试结果
我分别重复执行了5次手动循环求和和5次Iterable.sum()求和,结果非常一致:手动for循环的耗时明显更低,Iterable.sum()的运行速度慢了将近10倍,这个差异完全超出了我的预期。
内容的提问来源于stack exchange,提问作者Michał Šrajer
相关产品推荐
相关产品推荐

