如何计算java中执行的字节码数量

and*_*dge 6 java jvm bytecode

我打算参加MIT的battlecode比赛.参赛者编写的程序可以控制相互对抗的机器人.问题在于你的机器人仅限于在一个回合中执行一定数量的字节码(去年每回合10000次).现在,简单的循环就像

(int i=0; i<100; i++){
// do nothing
}
Run Code Online (Sandbox Code Playgroud)

根据他们的软件,使用大约400字节码(大概是这样的(用于递增i的2字节码加上用于检查i <100的2字节码)*100 = 400字节码)因此我们必须编写非常紧密的代码.因此,当我尝试一些不同的导航算法时,重要的是我能够弄清楚我的代码使用了多少字节码 - 我该怎么做?

(这是可能的 - 他们这样做,我只是不确定如何!而且,他们必须阻止JIT以某种方式进入游戏.我知道每个机器人都在一个单独的线程中运行,所以我肯定答案涉及到一些我不知道的线程技巧.)

int*_*nt3 5

您可以使用Hotspot JVM的调试版本(可在此处找到)并使用-XX:+CountBytecodes标志运行它来获取计数.


and*_*dge 3

查看他们的源代码,他们使用 asm 字节码操纵器http://asm.ow2.org/来进行计数。