Java iload_1、iload_2、iload_3和iload#index字节码之间的区别是什么?
iload#索引与其他3字节代码的区别。它们之间有什么性能差异吗 iload#索引与其他3字节代码的区别 iload_1_2_3使用一个字节的字节码。另一种形式使用2 它们之间有什么性能差异吗 只是间接的。大多数情况下,这没有什么区别,但是有一些性能调优指标是基于字节码字节数的。e、 g.是否内联方法。稍长的方法可能意味着不执行某些优化Java iload_1、iload_2、iload_3和iload#index字节码之间的区别是什么?,java,bytecode,java-bytecode-asm,Java,Bytecode,Java Bytecode Asm,iload#索引与其他3字节代码的区别。它们之间有什么性能差异吗 iload#索引与其他3字节代码的区别 iload_1_2_3使用一个字节的字节码。另一种形式使用2 它们之间有什么性能差异吗 只是间接的。大多数情况下,这没有什么区别,但是有一些性能调优指标是基于字节码字节数的。e、 g.是否内联方法。稍长的方法可能意味着不执行某些优化 e、 g.内联方法(即使不经常调用)的度量是35字节。如果代码使用iload#而不是iload#1,则可能意味着它的长度略大于35字节,而不是略小于35字节,并
e、 g.内联方法(即使不经常调用)的度量是35字节。如果代码使用iload#而不是iload#1,则可能意味着它的长度略大于35字节,而不是略小于35字节,并且不会内联。启动新线程时,JVM会为线程创建一个新堆栈,当线程调用Java方法时,虚拟机会创建一个新框架并将其推送到线程的Java堆栈上。 堆栈帧由三部分组成:局部变量、操作数堆栈、帧数据 局部变量被组织为一个基于零的单词数组 这些iload_1、iload_2、iload_3是局部变量数组的入口级别。因此,iload_1表示引用局部变量数组的第一个索引。类似地,iload_2和iload_3意味着分别引用局部变量数组的第二个和第三个索引
因此,这些iload_1、iload_2和iload_3之间没有具体区别,而是在局部变量数组中引用各自的索引。因此,我认为局部变量的前三个元素的访问速度比其他变量快,因为它涉及索引。iload#U 1和iload#index的汇编/C实现将有助于更好地理解它。因此,我可以假设,当使用iload#U 1和iload#index访问变量时,性能没有任何差异?@IshwarChandra,除非将该方法变大意味着它不会得到太多优化。例如,35字节或更少的方法可以快速内联。