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

我要参加麻省理工学院的电竞比赛。 参赛者编写的程序可以控制相互对抗的机器人。 问题在于你的机器人只能在一个回合中执行一定数量的字节码(去年每回合10000次)。 现在,简单的循环就像

(int i=0; i<100; i++){ // do nothing } 

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

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

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

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

您可以像这样生成字节码:

 javac Employee.java javap -c Employee > Employee.bc 

来源: http : //www.ibm.com/developerworks/ibm/library/it-haggar_bytecode/