Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算java中执行的字节码数_Java_Jvm_Bytecode - Fatal编程技术网

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

如何计算java中执行的字节码数,java,jvm,bytecode,Java,Jvm,Bytecode,我要参加麻省理工学院的战斗代码竞赛。参赛者编写程序来控制相互争斗的机器人。问题是你的机器人一次只能执行一定数量的字节码(去年是10000次)。现在,一个简单的循环 像 (int i=0;i您可以像这样生成字节码: javac Employee.java javap -c Employee > Employee.bc 来源:您可以通过使用Hotspot JVM的调试版本(可以找到)并使用-XX:+CountBytecodes标志运行它来获得计数。仔细查看,他们使用asm字节码操纵器来进行计

我要参加麻省理工学院的战斗代码竞赛。参赛者编写程序来控制相互争斗的机器人。问题是你的机器人一次只能执行一定数量的字节码(去年是10000次)。现在,一个简单的循环 像


(int i=0;i您可以像这样生成字节码:

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

来源:

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

仔细查看,他们使用asm字节码操纵器来进行计数。

如果我下载并在JavaC1.7.0\09编译的类文件上运行它,我会得到一个错误“不支持的major.minor版本51.0”。我应该使用其他编译器吗?我确实链接到了java 6 vm,所以这并不奇怪:)我不知道在线提供的java 7 vm的调试版本,因此您最好安装java 6编译器并重新编译。或者,您可以自己编译java 7 vm,但我认为这会更麻烦。您还必须指定-XX:-UseCompiler,否则代码将编译为本机代码,然后就不会被编译不计算在内。如果你是以执行的指令数量来衡量的,你可能会想手工编写字节码。Java编译器会盲目地将源代码翻译成字节码而不进行优化,这意味着它有大量的冗余指令。通常这不会是一个问题,因为VM会对它们进行优化,但我会这样做增加指令数。直接编写字节码可以做得更好。
javac Employee.java
javap -c Employee > Employee.bc