gpt4 book ai didi

performance - Scala 模式匹配性能

转载 作者:行者123 更新时间:2023-12-04 15:32:07 24 4
gpt4 key购买 nike

我在coursera“scala specialization”做作业时遇到了这个问题(这是简化版,不包含任何作业细节,只是数组遍历)

val chars: Array[Char] = some array

def fun1(idx:Int):Int = {
some code here (including the stop condition)

val c = chars(idx)
c match{
case '(' => fun1(idx+1)
case _ => fun1(idx+1)
}

}

此代码比慢 4 倍
def fun2(idx: Int):Int = {
some code here (including the stop condition)

val c = chars(idx)
(c == '(') match{
case true => fun2(idx+1)
case _ => fun2(idx+1)
}
}

我所做的就是改变模式匹配
(我使用 ScalMeter 运行它,所以我相信统计数据)。

谁能解释这种行为?

最佳答案

我只能确认第一个match慢约 50%,而不是 4 倍(2.11.8)。无论如何,如果您查看字节码,您会发现第一个 match翻译成 tableswitch指令,通常用于 Java switch有多个选择的语句,基本上是一个查找转到,而第二个被转换为 if .所以第二个 match很简单:

if (c == '(') fun2(idx+1) else fun2(idx+1)

关于performance - Scala 模式匹配性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37896511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com