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

时间:2012-12-10 23:28:15

标签: java jvm bytecode

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

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

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

答案 2 :(得分:-1)

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

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

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