为何自定义Kotlin indices实现比官方实现性能更优?
为何自定义与官方逻辑一致的CharSequence.indices能提升执行速度?
我测试了一段Kotlin代码实现自定义空白判断方法:
fun CharSequence.isMyBlank(): Boolean { return indices.all { this[it].isWhitespace() } }
用以下测试代码验证执行效率:
@Test fun testing() { val timeUsed = measureNanoTime { repeat(1000) { " ".isMyBlank() } } println(timeUsed) }
测试结果显示,这段代码耗时约5.6毫秒。
但当我在代码中自定义了一个与Kotlin官方逻辑完全一致的indices属性后:
fun CharSequence.isMyBlank(): Boolean { return indices.all { this[it].isWhitespace() } } public val CharSequence.indices: IntRange get() = 0..length - 1
运行相同测试代码,耗时稳定在约2毫秒。
对比后发现,我自定义的indices属性和Kotlin官方提供的实现逻辑完全一致:
public val CharSequence.indices: IntRange get() = 0..length - 1
为什么自定义实现会让执行速度更快?
内容的提问来源于stack exchange,提问作者Elye
相关产品推荐
相关产品推荐

