我想知道我的java代码消耗了多少指令来执行。我正在寻找一个api,它开始指令计数,最后的指令总数应该在最后返回
例如:
public static void main()
{
int a=0;
int b=0;
int c=0;
startCountinst();
if(a==b)
{
c++;
}
int n = stopCountinst();
}
最后,n应表示调用startCountinst()
后执行的指令总数。在java中可以计算指令吗?
答案 0 :(得分:3)
在Linux上,您可以运行perf cpu-cycles这将计算程序使用的CPU周期数。如果您使用perf list
,您可以看到监控应用程序的所有其他选项。
答案 1 :(得分:2)
如果您对JVM指令的数量感兴趣,可以手动计算它们。来源:
public static void main()
{
int a = 0;
int b = 0;
int c = 0;
if (a == b)
{
c++;
}
}
您可以通过调用javap -c YouClassName
来查看字节码:
public static void main();
Code:
0: iconst_0
1: istore_0
2: iconst_0
3: istore_1
4: iconst_0
5: istore_2
6: iload_0
7: iload_1
8: if_icmpne 14
11: iinc 2, 1
14: return
您感兴趣的if语句可编译为4个JVM指令。
答案 2 :(得分:1)
我喜欢这个问题。可能有助于衡量绩效。但并非每条指令都需要相同的时间。所以你最好看看你的代码分析。
JProfiler相当受欢迎:
https://www.ej-technologies.com/products/jprofiler/overview.html
还有几种免费的替代品。只是Google for java profiler并看一看。提供大量信息。
答案 3 :(得分:0)
本机C
或C++
程序在编译时将包含一组程序集(机器)指令。因此,讨论运行C
/ C++
代码时将执行的指令数量是有意义的。但是,在编译Java类时,会生成一个由与平台无关的字节码组成的.class
文件。与Java指令数最接近的是字节码指令的数量。
博士。垃圾有Eclipse plugin for visualizing bytecode。您可以通过检查确定字节码指令的数量,然后确定已执行的总指令数。