`
雪馨25
  • 浏览: 129575 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

【java】JETM--Java™的执行时间测量库简单学习(一)

阅读更多

一、下载

用途:测试Java™应用程序潜在的性能问题

学习目的:帮助记录某程序运行过程中各个具体方法调用的次数及时间(最大值,最小值,平均值,总值),帮助大家找到程序执
行过程中的瓶颈

下载地址:http://jetm.void.fm/files.html

下载版本: jetm-1.2.3.zip 或 下载 jetm-samples-1.2.3.zip(其中有两个例子可用于学习)

 

引入:解压,将jar包添加并引入项目中

 

二、示例代码:

/**
 * 执行j从零至一百的循环递加,且当j为是的整数倍时调用方法LessJ(int j)LessJ(int j)--- 执行i
 * >0的递减,使用JETM目的执行程序得到两个函数调用的次数及时间
 * @author rwq
 */
public class JETMTest {
    private static EtmMonitor monitor;

    private static void setup() {
        BasicEtmConfigurator.configure();
        // BasicEtmConfigurator.configure(true);
        // BasicEtmConfigurator.configure(true,new DefaultTimer());
        monitor = EtmManager.getEtmMonitor();
        monitor.start();
    }

    private static void tearDown() {
        monitor.stop();
    }

    public static void main(String[] args) {
        setup();
        EtmPoint point = monitor.createPoint("00_JETMTest_main");
        AddNumber add = new AddNumber();
        add.addHun();
        add.lessJ(10);
        point.collect();
        monitor.render(new SimpleTextRenderer());
        tearDown();
    }

}

class AddNumber {
    private static final EtmMonitor etmMonitor = EtmManager.getEtmMonitor();
    void addHun() {
        // 数字序号_阶段名称_功能
        EtmPoint point = etmMonitor.createPoint("01_AddNumber_addHun");
        try {
            int j = 0;
            for (int i = 0; i < 100; i++) {
                lessJ(j);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            point.collect();
        }
    }

    void lessJ(int j) {
        EtmPoint point = etmMonitor.createPoint("02_AddNumber_lessJ");
        try {
            int i = j;
            for (; i > 0;) {
                i--;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            point.collect();
        }
    }
}


代码说明:
方法:
addHum()---执行j从零至一百的循环递加,且当j为是的整数倍时调用方法LessJ(int j)
LessJ(int j)--- 执行i >0的递减

目的:使用JETM目的执行程序得到函数调用的次数及时间


三、控制台执行效果

(执行点,执行次数,平均时间,最小时间,最大时间,总时间)
BasicEtmConfigurator.configure();方式结果如下

BasicEtmConfigurator.configure(true);方法结果如下

四、理解

1.需测函数中构造变量point:EtmPoint point = etmMonitor.createPoint("01_AddNumber_addHun"); .变量命名point 要有意义或者有顺序,一般规则是:数字序号_阶段名称_功能(见下图效果显示),数字序号可以层层增加如第一层01,JETM的结果中point是有顺序的

2.要在方法结束时调用point.collect(); ---用以收集结果

3.主函数中也要收集总共用时

4、Setup():指明记录方式,初始化变量,设置monitor.start(); 开始时调用(命名为JETMsetup更确切)

5、BasicEtmConfigurator.configure();---指明记录方式,如下

BasicEtmConfigurator.configure();---- 只记录总共调用
BasicEtmConfigurator.configure(true);----记录循环调用,以及单独调用
BasicEtmConfigurator.configure(true, new DefaultTimer()); ----以一定时间方式

6、tearDown() :monitor.stop(); 结束时必须关闭(命名为JETMtearDown更确切)

7、monitor.render(new SimpleTextRenderer()): 可视化结果


五、感悟
可以在整个程序运行过程中记录:用了什么方法, 用了多少次, 执行的时间 ,记录一个方法运行时间,找到运行慢的方法,也可以找到无用的方法

六、学习网址:

http://jetm.void.fm/doc.html

分享到:
评论

相关推荐

    jetm-1.2.3.tar.gz

    JetM,全称为Java Event and Timer Manager,是一个用于Java应用程序的事件管理和定时任务处理框架。在标题和描述中提到的"jetm-1.2.3.tar.gz"是一个压缩包,其中包含了JetM框架的1.2.3版本。这个压缩包采用的是tar....

    javacv-platform-1.5.5-bin.zip

    JavaCV(Java Computer Vision)是一个开源的计算机视觉库,它为Java和Android开发者提供了与多个流行计算机视觉框架的接口,包括OpenCV、FFmpeg、FaceRecognizer等。标题中的"javacv-platform-1.5.5-bin.zip"指的是...

    javacv-platform-1.5.3-bin.zip

    JavaCV(Java Computer Vision)是一个基于Java的计算机视觉库,它为Java开发者提供了一套方便的接口和工具,使得他们能够更容易地访问和利用OpenCV、FFmpeg等库。JavaCV平台1.5.3版本的发布,为开发者带来了最新的...

    javacv-0.7-bin_JAVACV_图像处理_

    JavaCV(Java Computer Vision)是一个开源的Java库,它为Java和Android开发者提供了一系列用于计算机视觉的工具和框架。这个库的主要目标是简化在这些平台上进行图像和视频处理的工作。"javacv-0.7-bin.zip"是Java...

    mysql-connector-java-5.1.40.zip和mysql-connector-java-5.1.10.jar

    `mysql-connector-java-5.1.10.jar` 是一个JAR(Java Archive)文件,是MySQL Connector/J的一个特定版本,即5.1.10。JAR文件是Java平台特有的归档格式,用于封装类文件、资源文件等,便于在Java环境中运行和分发。...

    很棒的毕业设计、课程设计、练手的java项目-仓库商品管理系统(文档+视频+源码).rar

    很棒的毕业设计、课程设计、练手的java项目---仓库商品管理系统(文档+视频+源码) 很棒的毕业设计、课程设计、练手的java项目---仓库商品管理系统(文档+视频+源码) 很棒的毕业设计、课程设计、练手的java项目---仓库...

    javacv-platform-1.3-bin.zip

    JavaCV(Java Computer Vision)是一个开源的计算机视觉库,它为Java和Android提供了对各种流行的计算机视觉库的访问,如OpenCV、FFmpeg、Face_recognition等。在本例中,我们关注的是`javacv-platform-1.3-bin.zip`...

    java学习-中午复习-java中的时间

    java学习-中午复习-java中的时间

    javacv-platform-1.3.3-bin.zip

    javacv官方最新全量jar包,javacv-platform-1.3.3-bin.zip,由于github国内下载较慢,此文件只作为分流,由于现在csdn没办法设置免费资源了,只能设置最低的2分,望大家见谅!

    mysql-connector-java-5.1.45-bin.jar

    在实际项目中,为了方便管理,我们通常会将`mysql-connector-java-5.1.45-bin.jar`这样的依赖库加入到项目的类路径(classpath)中。如果使用Maven或Gradle构建系统,可以在pom.xml或build.gradle文件中添加对应的...

    dingtalk-sdk-java.zip

    先把dingtalk-sdk-java安装到本地的 maven库里面, 再到pom.xml里添加一下。 在官网下载一份jar : https://ding-doc.dingtalk.com/doc#/faquestions/vzbp02 解压,再修改下面命令里面的路径后执行: mvn install:...

    基于java的-109-java学习平台--LW-源码.zip

    本资料包“基于java的-109-java学习平台--LW-源码.zip”提供了一个完整的Java学习平台的源代码,这为我们深入理解Java编程和Spring Boot框架提供了宝贵的资源。 首先,这个平台显然采用了Java语言进行开发,Java...

    mysql-connector-java-5.1.28-bin.jar

    对于非 Maven 项目,可以直接将 `mysql-connector-java-5.1.28-bin.jar` 文件复制到项目的 `lib` 目录或系统级的 `JRE/lib/ext` 目录下,使其对所有 Java 应用可见。 总之,MySQL Connector/J 5.1.28 是连接 Java ...

    java-unrar-0.3.jar以及commons-logging-1.1.1.jar

    在Java编程环境中,处理RAR文件通常需要特定的库支持,因为Java的标准库并不包含直接解压RAR文件的功能。这里提到的"java-unrar-0.3.jar"和"commons-logging-1.1.1.jar"是两个关键的Java库,它们提供了处理RAR文件和...

    JavaMelody javamelody-core-1.52.0.jar jrobin-1.5.9.jar

    3. **数据库监控**:追踪SQL查询,显示执行时间,有助于优化数据库操作。 4. **缓存监控**:如果应用使用了缓存(如Ehcache或Hazelcast),JavaMelody能监控其命中率和大小。 5. **会话监控**:查看活跃会话数量,...

    mysql-connector-java-gpl-5.1.36

    "mysql-connector-java-gpl-5.1.36"是MySQL Connector/J的一个特定版本,发布于GPL(GNU General Public License)许可下,意味着它是开源且可自由分发的。 MySQL Connector/J 5.1.36是针对MySQL 5.1系列数据库...

    mysql-connector-java-commercial-5.1.30-bin.jar

    将要使用的是mysql-connector-java-5.1.30-bin-g.jar和mysql-connector-java-5.1.30-bin.jar 配置 在C:\Program Files\Java目录下建立mysqlforjdbc子目录,进入该目录将mysql-connector-java-5.1.30-bin.jar到该...

    ckeditor-java-core-3.5.3

    此版本是"ckeditor-java-core-3.5.3",专门针对Java平台进行了优化,允许开发者在Java应用程序中集成CKEditor的功能。 1. **CKEditor简介** CKEditor是一款基于JavaScript的WYSIWYG(所见即所得)文本编辑器,最初...

    java-client-1.6.1.jar

    `java-client-1.6.1.jar`是一个Java编程语言的客户端库,它提供了与特定服务器或服务进行交互的功能。这个版本号1.6.1表示这是该库的第1次重大更新、第6次次要更新和第1次补丁版本。这种命名方式遵循了通常的 ...

    mysql驱动包mysql-connector-java-5.1.7-bin.jar

    mysql-connector-java-5.1.7-bin.jar

Global site tag (gtag.js) - Google Analytics