如何静态分析jar包(map-reduce应用程序)并提取一些影响执行时间的特征



哪些代码功能会影响程序的执行时间?有没有办法静态分析 jar 包并提取这些功能?如逻辑运算计数、算术运算计数、IO 运算频率、调用堆栈深度等。我想静态分析map-reduce应用程序的jar包,并提取一些会影响执行时间的有用代码功能。我可以将包解压缩成.class文件,或者将.class文件反编译为 java 代码,但是不同的 map-reduce 应用程序有不同的操作,如何分析这些文件以获得我想要的功能?如果我想知道代码中的循环计数,我是否需要分析一个拆分数据文件中有多少行需要由hadoop处理?

基本上是不可能的。程序的执行时间不取决于其代码中的循环次数(或 I/O、算术运算或其他任何内容(,而是取决于每个操作的执行次数。在任何合理的程序中,这将取决于输入数据,如果不访问输入数据,您将无法说任何内容。

(如果你有输入数据,你可以简单地在探查器下运行程序,看看它的哪些部分花费的时间最多。

最新更新