如何测量java程序中方法的cpu使用率

如何测量java程序中方法的cpu使用率,java,performance,profiling,Java,Performance,Profiling,我想测量Java应用程序中的CPU使用情况,例如 System.out.println("...") HelloWorld应用程序的。有什么想法吗?我不想测量整个应用程序的CPU使用率,只想测量应用程序中的方法 有没有办法将应用程序的总执行时间与整个应用程序的CPU使用率关联起来?在我看来,分析单个方法没有意义。因为a)很容易发现占用资源的方法(即,如果你必须遍历10000个输入值,只找到100个想要输出的有效值,那么很明显你是无效的,在9900个无用的迭代上浪费CPU时间)和b)有效设计

我想测量Java应用程序中的CPU使用情况,例如

 System.out.println("...") 
HelloWorld应用程序的。有什么想法吗?我不想测量整个应用程序的CPU使用率,只想测量应用程序中的方法


有没有办法将应用程序的总执行时间与整个应用程序的CPU使用率关联起来?

在我看来,分析单个方法没有意义。因为a)很容易发现占用资源的方法(即,如果你必须遍历10000个输入值,只找到100个想要输出的有效值,那么很明显你是无效的,在9900个无用的迭代上浪费CPU时间)和b)有效设计的关键是预见占用资源的方法,再次使用与a点相同的示例,作为设计师,您需要找到更有效的解决问题的方法,使用更精简、更快的数据结构,或者只是找到从方法中删除垃圾数据的方法


编辑:不,由于java JIT和它自动使用垃圾收集器的事实,没有办法将执行时间和cpu使用率关联起来。

这个问题有点迟钝,因为可能一次执行多个方法。我使用的分析方法是针对整个应用程序的使用而设计的。您可以看到评估一个方法需要多少时间,这可能与CPU使用率有关。Ok。一旦我测量了执行该方法的时间(例如,
System.out.println(“…”)
,我如何将测量的时间与CPU使用率关联起来?您能否更新您的问题,说明为什么要这样做?即使您可以看到在执行单个方法时CPU峰值可能是什么,这也不一定是负载测试整个应用程序的有用数据点。顺便说一句,有没有一种方法可以将应用程序的总执行时间与整个应用程序的CPU使用率关联起来?您采用的分析方法完全错误。测量应用程序的小“随机”部分是没有用的。您可以从整体上衡量应用程序的性能,这可能会给您带来“热点”,即需要最多资源的地方。为了提高性能,您将专注于热点。其他一切都是噪音。您可以将时间花在其他方面,而不是尝试测量
System.out.println()