Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java iload_1、iload_2、iload_3和iload#index字节码之间的区别是什么?_Java_Bytecode_Java Bytecode Asm - Fatal编程技术网

Java iload_1、iload_2、iload_3和iload#index字节码之间的区别是什么?

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字节,并

iload#索引与其他3字节代码的区别。它们之间有什么性能差异吗

iload#索引与其他3字节代码的区别

iload_1_2_3使用一个字节的字节码。另一种形式使用2

它们之间有什么性能差异吗

只是间接的。大多数情况下,这没有什么区别,但是有一些性能调优指标是基于字节码字节数的。e、 g.是否内联方法。稍长的方法可能意味着不执行某些优化


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字节或更少的方法可以快速内联。