在scala的字节代码中不必要的加载和存储指令
发布时间:2020-12-16 18:35:39 所属栏目:安全 来源:网络整理
导读:我只是对模式匹配及其相应的字节代码进行了一些调查. 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
我只是对模式匹配及其相应的字节代码进行了一些调查.
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |