Java Virtual Machine Instruction Set页面提供了有关助记符的信息,例如aaload、aastore...等。
然而,既没有提到这些助记符将占用的cpu周期,也没有关于这些助记符的字节大小或字大小的任何信息。
你知道在哪里可以找到这些信息吗?
发布于 2009-09-09 00:31:33
规范是JVM需要实现的,而不是如何实现的。不同的平台和供应商提供的不同JVM(如IBM和Sun )将使用不同的实现,因此您不能对字节大小和处理器周期做任何假设。如果您真的想找到更多信息,可以下载Open JDK源代码并查看它,但这只是一个实现,您不能假设其他实现将具有完全相同的性能特征。
发布于 2009-09-09 01:27:15
如前所述,您所寻找的信息并不存在,因为它不存在。除了还提到不同的JVM可以不同地实现指令(或指令的组合)之外,单个JVM也可以以不同的方式实现它。
对于指令的不同组合(根据指令与其他指令一起使用的方式,以不同的方式实现指令可能更有效率)和不同的执行场合都是如此。由于JVM始终控制程序的执行,因此它可以(并且确实)监视程序的行为,并决定重新优化经常运行的代码(或满足某些其他条件的代码)。例如,这可能导致在函数执行前1000次时,您的指令被翻译为特定的机器指令集,而在其余的执行过程中,指令被翻译为另一组机器指令。
这种高级的优化能力(以及其他)是为什么Java字节码的优化最好留给Java虚拟机,也是为什么在某些情况下,Java程序可以比等效的C或C++程序快得多(C和C++通常只进行静态优化,而Java是动态优化的)。
https://stackoverflow.com/questions/1397009
复制相似问题