一、下载
用途:测试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,全称为Java Event and Timer Manager,是一个用于Java应用程序的事件管理和定时任务处理框架。在标题和描述中提到的"jetm-1.2.3.tar.gz"是一个压缩包,其中包含了JetM框架的1.2.3版本。这个压缩包采用的是tar....
JavaCV(Java Computer Vision)是一个基于Java的计算机视觉库,它为Java开发者提供了与多个流行的计算机视觉库的接口,如OpenCV、FFmpeg等。`javacv-platform-1.5.4.zip`是一个压缩包,包含了JavaCV平台版本1.5.4所...
JavaCV(Java Computer Vision)是一个开源的Java库,它提供了与多个计算机视觉框架的接口,如OpenCV、FFmpeg、ImageIO等。标题中的“javacv-platform-1.5.5”指的是JavaCV的一个特定版本,即1.5.5,这个版本包含了...
JavaCV(Java Computer Vision)是一个开源的计算机视觉库,它为Java和Android开发者提供了与多个流行计算机视觉框架的接口,包括OpenCV、FFmpeg、FaceRecognizer等。标题中的"javacv-platform-1.5.5-bin.zip"指的是...
java学习平台--论文java学习平台--论文java学习平台--论文java学习平台--论文java学习平台--论文java学习平台--论文java学习平台--论文java学习平台--论文java学习平台--论文java学习平台--论文java学习平台--论文...
JavaCV(Java Computer Vision)是一个基于Java的计算机视觉库,它为Java开发者提供了一套方便的接口和工具,使得他们能够更容易地访问和利用OpenCV、FFmpeg等库。JavaCV平台1.5.3版本的发布,为开发者带来了最新的...
JavaCV,全称为Java Computer Vision,是一个开源的计算机视觉库,它为Java程序员提供了一系列方便的接口,使得他们能够利用底层的计算机视觉库,如OpenCV、FFmpeg等。在JavaCV项目中,有两个非常重要的JAR包:`...
JavaCV(Java Computer Vision)是一个开源的计算机视觉库,它为Java和Android提供了对各种流行的计算机视觉库的访问,如OpenCV、FFmpeg、Face_recognition等。在本例中,我们关注的是`javacv-platform-1.3-bin.zip`...
JavaCV(Java Computer Vision)是一个基于Java的计算机视觉库,它为Java开发者提供了一系列与图像处理、视频分析和机器学习相关的API。JavaCV的核心目标是简化在Java环境中使用开源计算机视觉库的过程,如OpenCV、...
"mysql-connector-java-5.1.7-bin.jar" 文件就是这个桥梁,它是一个Java归档(JAR)文件,包含了MySQL JDBC驱动的所有必要组件。 MySQL JDBC驱动,也被称为MySQL Connector/J,允许Java应用程序通过遵循JDBC API来...
`mysql-connector-java-5.1.10.jar` 是一个JAR(Java Archive)文件,是MySQL Connector/J的一个特定版本,即5.1.10。JAR文件是Java平台特有的归档格式,用于封装类文件、资源文件等,便于在Java环境中运行和分发。...
很棒的毕业设计、课程设计、练手的java项目---仓库商品管理系统(文档+视频+源码) 很棒的毕业设计、课程设计、练手的java项目---仓库商品管理系统(文档+视频+源码) 很棒的毕业设计、课程设计、练手的java项目---仓库...
java学习-中午复习-java中的时间
"onvif-java-lib-master.rar" 是一个包含Java库的压缩包,用于帮助开发者在Java环境中实现对ONVIF设备的查找和控制。 在Java库中,通常会包含以下关键模块和功能: 1. **设备发现**:ONVIF库提供了设备发现的功能...
javacv官方最新全量jar包,javacv-platform-1.3.3-bin.zip,由于github国内下载较慢,此文件只作为分流,由于现在csdn没办法设置免费资源了,只能设置最低的2分,望大家见谅!
在这个特定的版本——mysql-connector-java-5.1.40-bin.jar中,我们找到了这个连接器的5.1系列的一个稳定版本。 首先,让我们了解JDBC的作用。JDBC是Sun Microsystems(现为Oracle公司)为Java编程语言设计的一套...
在实际项目中,为了方便管理,我们通常会将`mysql-connector-java-5.1.45-bin.jar`这样的依赖库加入到项目的类路径(classpath)中。如果使用Maven或Gradle构建系统,可以在pom.xml或build.gradle文件中添加对应的...
MySQL Connector/J 5.1.46 是 MySQL 官方为 Java 应用程序提供的一款数据库连接驱动,它使得 Java 开发者能够方便地在 Java 应用中连接到 MySQL 数据库,执行 SQL 查询和管理数据。这个版本的驱动遵循 JDBC(Java ...
先把dingtalk-sdk-java安装到本地的 maven库里面, 再到pom.xml里添加一下。 在官网下载一份jar : https://ding-doc.dingtalk.com/doc#/faquestions/vzbp02 解压,再修改下面命令里面的路径后执行: mvn install:...
描述中的"mysql-connector-java-5.1.37.jar包"是这个版本的核心组件,它是Java应用程序连接到MySQL数据库所需的主要库。开发者在Java程序中引入这个JAR文件,就能通过JDBC API与MySQL服务器进行通信,执行SQL查询、...