java—如何静态分析jar包(MapReduce应用程序)并提取一些影响执行时间的特性?

u2nhd7ah  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(365)

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

9vw9lbht

9vw9lbht1#

这基本上是不可能的。一个程序的执行时间并不取决于它的代码中的循环数(或i/o,或算术运算,或其他任何东西),而是取决于每一个这些运算将被执行的次数。在任何合理的程序中,这将取决于输入数据,没有输入数据的访问,你不能说任何事情。
(如果您确实有输入数据,您只需在探查器下运行该程序,看看其中哪些部分花费的时间最多。)

相关问题