gpt4 book ai didi

scala - scala 字节码中不必要的加载和存储指令

转载 作者:行者123 更新时间:2023-12-04 20:45:01 31 4
gpt4 key购买 nike

我只是对模式匹配及其相应的字节码进行了一些研究。

val a = Array(1,2,3,4)
a.map {
case i => i + 1
}

对于上面的代码,我使用 javap 并获得了 map 中匿名函数的字节码:
public int apply$mcII$sp(int);
Code:
0: iload_1
1: istore_2
2: iload_2
3: iconst_1
4: iadd
5: ireturn

所以在我看来,在第 0 行我们推送了一个 int(参数),然后在第 1 行我们加载了 int,在第 2 行我们把它推回了......这里的目的是什么?

谢谢!

最佳答案

伙计,试试 -optimise .

  public int apply$mcII$sp(int);
flags: ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
0: iload_1
1: iconst_1
2: iadd
3: ireturn


scala> :javap -prv -

然后像
scala> :javap -prv $line4/$read$$iw$$iw$$anonfun$1

关于scala - scala 字节码中不必要的加载和存储指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19296240/

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