性能分析系列-小命令保证大性能

发表于:2016-11-28来源:简书作者:小程故事多点击数: 标签:性能分析
最近在工作中经常和性能压测工作打交道,积累了一些性能分析经验,我觉得这些经验对每一个开发者都有帮助的,能开发出性能高的代码也是我们的最终目标。

最近在工作中经常和性能压测工作打交道,积累了一些性能分析经验,我觉得这些经验对每一个开发者都有帮助的,能开发出性能高的代码也是我们的最终目标。

由易到难,我们逐步介绍不同命令的用法和好处,这些命令是如何帮助我们开发人员进行性能分析的。

一、开发者的自测利器-Hprof命令

1、示例演示

例子程序:

/**
 * PROJECT_NAME: test
 * DATE:         16/7/22
 * CREATE BY:    chao.cheng
 **/
public class HProfTest {
    public void slowMethod() {
        try {
            Thread.sleep(1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void slowerMethod() {
        try {
            Thread.sleep(10000);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        HProfTest test = new HProfTest();
        test.slowerMethod();
        test.slowMethod();
    }
}

注:这是一段测试代码通过sleep方法进行延时,在程序运行过程中很慢,我想知道到底是哪段程序影响的整体性能呢?

我在这个java程序中,加了如下运行参数:

-agentlib:hprof=cpu=times,interval=10
/* 
    times:java函数的执行时间
    hprof=cpu是针对cpu统计时间
    interval=10 采样10次 
*/

再次运行这段程序显示如下图:


Paste_Image.png


这时候还发现在工程目录里面,多了一个文本文件java.hprof.txt,如下图所示:


Paste_Image.png


内容如下:

CPU TIME (ms) BEGIN (total = 11542) Fri Jul 22 11:00:34 2016
rank   self  accum   count trace method
   1 86.65% 86.65%       1 303422 com.test.HProfTest.slowerMethod
   2  8.66% 95.31%       1 303423 com.test.HProfTest.slowMethod
   3  0.25% 95.56%      36 300745 java.util.zip.ZipFile.<init>
   4  0.20% 95.76%      36 300434 java 



           

原文转自:http://www.jianshu.com/p/6df2963fe94e