理想情况下,每个字节码的cpu周期测量值会显示这一点,尽管我还没有找到关于该主题的更多内容。
编辑: 如果我有一个可以以两种不同的方式进行优化的程序,并且每个优化都会导致为每个变体程序执行5个更少的字节码,那么除了这个度量之外,两个优化都不能被告知。
然而,当在JVM上运行时,每个中的5个字节代码可能转换为完全不同的性能特征(假设JVM在测量两个程序时可以表现得尽可能相似)。
两个优化的变体程序需要区分多少个字节码,然后才能合理地确定一个程序的性能优于另一个?
答案 0 :(得分:1)
任意大。
即使您只考虑在单个处理器上运行的单个VM实现,由于使用了及时编译,因此存在巨大差异。 VM不必逐个执行字节码操作。相反,它会对其进行分析,优化它们,并将其编译为本机代码。所以字节码和执行时间之间没有任何对应关系。
答案 1 :(得分:0)
这没有任何意义。任何字节码的执行都需要一段时间......没有人真正应该关心。时间关键代码被编译成本机指令,然后与字节码没有对应关系,允许你说出iload_1
需要多长时间。
多个字节码经常被编译成单个HW指令,一些字节码可能被编译成多个HW指令,但很多时候很难说出会发生什么(例如,而不是3个字节码,你有5个HW指令)。
然后我们来解决硬件指令的时序问题,这可能更复杂: