- 浏览: 2563600 次
- 性别:
- 来自: 成都
-
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
2009-09-17 15:56使用Perf4J来检查方法性能
首页
http://perf4j.codehaus.org/index.html
下载地址
http://repository.codehaus.org/org/perf4j/perf4j/
得到jar包
perf4j-0.9.12.jar
放置到WEB-INF/lib下面
我的UserController.java 片段如下:
StopWatch watch1 = new Log4JStopWatch();//定义时钟
UserQuery query = new UserQuery();
if (!"all".equalsIgnoreCase(select)) {
List<String> companies = this.getCurrentUserCompanyIds(request);
query.setCompanyIds(StringUtil.changeList2String(companies));
List<String> workgroups = this.getCurrentUserWorkgroupIds(request);
query.setWorkgroupIds(StringUtil.changeList2String(workgroups)); //1,
}
query.setStart(start);
query.setPageSize(pageSize);
if (StringUtil.isNotBlank(queryLoginId)) {
query.setLoginId(queryLoginId);
}
watch1.lap("queryPrepare"); //记录时间,查询前的准备
List<UserDTO> users = userManager.queryUsersWithWorkgroupName(query);
watch1.lap("query");//查询耗时
HashMap<String, Object> hm = new HashMap<String, Object>();
hm.put("success", Boolean.TRUE);
if (users != null && !users.isEmpty()) {
hm.put("users", users);
} else {
hm.put("users", new ArrayList<User>());
}
hm.put("paging", query);
JSONObject jo = JSONObject.fromObject(hm, this.configJson());
PrintWriter out = null;
watch1.lap("transJSON"); //JAVA对象转JSON耗时
修改web.xml,增加如下内容:
<servlet>
<servlet-name>perf4j</servlet-name>
<servlet-class>org.perf4j.log4j.servlet.GraphingServlet</servlet-class>
<init-param>
<param-name>graphNames</param-name>
<param-value>graphExecutionTimes,graphExecutionTPS</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>perf4j</servlet-name>
<url-pattern>/perf4j</url-pattern>
</servlet-mapping>
修改log4j.xml,唉,其实我不会配置log4j.properties和log4j.xml,只能参考着官方文档上修改,我的log4j.xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>
<!-- Perf4J appenders -->
<appender name="CoalescingStatistics"
class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">
<param name="TimeSlice" value="10000"/>
<appender-ref ref="fileAppender"/>
<appender-ref ref="graphExecutionTimes"/>
<appender-ref ref="graphExecutionTPS"/>
</appender>
<!-- This file appender is used to output aggregated performance statistics -->
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="log/perfStats.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
<appender name="graphExecutionTimes"
class="org.perf4j.log4j.GraphingStatisticsAppender">
<!-- Possible GraphTypes are Mean, Min, Max, StdDev, Count and TPS -->
<param name="GraphType" value="Mean"/>
<!-- The tags of the timed execution blocks to graph are specified here -->
<!-- 这几个名字和UserController里面的对应 -->
<param name="TagNamesToGraph" value="queryPrepare,query,transJSON"/>
<appender-ref ref="graphsFileAppender"/>
</appender>
<appender name="graphExecutionTPS"
class="org.perf4j.log4j.GraphingStatisticsAppender">
<param name="GraphType" value="TPS"/>
<param name="TagNamesToGraph" value="queryPrepare,query,transJSON"/>
<appender-ref ref="graphsFileAppender"/>
</appender>
<appender name="graphsFileAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="log/perfGraphs.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
<!-- Loggers -->
<logger name="org.perf4j.TimingLogger" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="CoalescingStatistics"/>
</logger>
<root>
<level value="ERROR"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
启动应用服务器,点击用户查询的功能,然后访问地址:
http://localhost:8088/icpmis/perf4j
就能看到这几个方法的实时的图像了。经过验证发现,转JSON的时间比较长。
首页
http://perf4j.codehaus.org/index.html
下载地址
http://repository.codehaus.org/org/perf4j/perf4j/
得到jar包
perf4j-0.9.12.jar
放置到WEB-INF/lib下面
我的UserController.java 片段如下:
StopWatch watch1 = new Log4JStopWatch();//定义时钟
UserQuery query = new UserQuery();
if (!"all".equalsIgnoreCase(select)) {
List<String> companies = this.getCurrentUserCompanyIds(request);
query.setCompanyIds(StringUtil.changeList2String(companies));
List<String> workgroups = this.getCurrentUserWorkgroupIds(request);
query.setWorkgroupIds(StringUtil.changeList2String(workgroups)); //1,
}
query.setStart(start);
query.setPageSize(pageSize);
if (StringUtil.isNotBlank(queryLoginId)) {
query.setLoginId(queryLoginId);
}
watch1.lap("queryPrepare"); //记录时间,查询前的准备
List<UserDTO> users = userManager.queryUsersWithWorkgroupName(query);
watch1.lap("query");//查询耗时
HashMap<String, Object> hm = new HashMap<String, Object>();
hm.put("success", Boolean.TRUE);
if (users != null && !users.isEmpty()) {
hm.put("users", users);
} else {
hm.put("users", new ArrayList<User>());
}
hm.put("paging", query);
JSONObject jo = JSONObject.fromObject(hm, this.configJson());
PrintWriter out = null;
watch1.lap("transJSON"); //JAVA对象转JSON耗时
修改web.xml,增加如下内容:
<servlet>
<servlet-name>perf4j</servlet-name>
<servlet-class>org.perf4j.log4j.servlet.GraphingServlet</servlet-class>
<init-param>
<param-name>graphNames</param-name>
<param-value>graphExecutionTimes,graphExecutionTPS</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>perf4j</servlet-name>
<url-pattern>/perf4j</url-pattern>
</servlet-mapping>
修改log4j.xml,唉,其实我不会配置log4j.properties和log4j.xml,只能参考着官方文档上修改,我的log4j.xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>
<!-- Perf4J appenders -->
<appender name="CoalescingStatistics"
class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">
<param name="TimeSlice" value="10000"/>
<appender-ref ref="fileAppender"/>
<appender-ref ref="graphExecutionTimes"/>
<appender-ref ref="graphExecutionTPS"/>
</appender>
<!-- This file appender is used to output aggregated performance statistics -->
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="log/perfStats.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
<appender name="graphExecutionTimes"
class="org.perf4j.log4j.GraphingStatisticsAppender">
<!-- Possible GraphTypes are Mean, Min, Max, StdDev, Count and TPS -->
<param name="GraphType" value="Mean"/>
<!-- The tags of the timed execution blocks to graph are specified here -->
<!-- 这几个名字和UserController里面的对应 -->
<param name="TagNamesToGraph" value="queryPrepare,query,transJSON"/>
<appender-ref ref="graphsFileAppender"/>
</appender>
<appender name="graphExecutionTPS"
class="org.perf4j.log4j.GraphingStatisticsAppender">
<param name="GraphType" value="TPS"/>
<param name="TagNamesToGraph" value="queryPrepare,query,transJSON"/>
<appender-ref ref="graphsFileAppender"/>
</appender>
<appender name="graphsFileAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="log/perfGraphs.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
<!-- Loggers -->
<logger name="org.perf4j.TimingLogger" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="CoalescingStatistics"/>
</logger>
<root>
<level value="ERROR"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
启动应用服务器,点击用户查询的功能,然后访问地址:
http://localhost:8088/icpmis/perf4j
就能看到这几个方法的实时的图像了。经过验证发现,转JSON的时间比较长。
发表评论
-
RESTful JSON Mock Server
2015-03-19 11:58 805RESTful JSON Mock Server C ... -
Performance Tool(7)Improve Lua and Wrk
2015-01-17 06:37 1046Performance Tool(7)Improve Lua ... -
Performance Tool(6)Gatling Upgrade to 2.1.2 Version Or wrk
2015-01-10 01:15 984Performance Tool(6)Gatling Upg ... -
Performance Tool(5)Upgrade to 2.0.x
2014-08-27 03:34 1136Performance Tool(5)Upgrade to 2 ... -
Performance Tool(4)CSV File Data Feeder
2014-08-25 10:50 1040Performance Tool(4)CSV File Dat ... -
wrk with LuaJIT
2014-08-19 06:30 1344wrk with LuaJITHere is an exa ... -
Performance Tool(3)Gatling Upgrade and Cluster
2014-07-25 02:32 1345Performance Tool(3)Gatling Upgr ... -
WRK a HTTP Benchmarking Tool
2014-03-07 04:42 1154WRK a HTTP Benchmarking Tool1 ... -
Performance Tool(1)Gatling
2013-03-15 05:28 1307Performance Tool(1)Gatling 1. ... -
Jenkins Configuration(4)Improve Shell Script Debug/Info Message
2013-01-07 06:32 1347Jenkins Configuration(4)Improve ... -
Jenkins Configuration(3)Shell Script
2012-12-28 01:17 2695Jenkins Configuration(3)Shell S ... -
Eclipse Plugin(2)SOAP UI
2012-06-08 10:48 1359Eclipse Plugin(2)SOAP UI Plugi ... -
Spring3 and REST Integeration(VII)Controller JUnit Test and Mock/Spring Test MVC
2012-04-06 15:57 1920Spring3 and REST Integeration(V ... -
Spring3 and REST Integration(VI)Controller JUnit Test and Mock/Spring HandlerAda
2012-04-06 15:51 1830Spring3 and REST Integration(VI ... -
Spring3 and REST Integration(V)Controller JUnit Test and Mock/HandlerAdapter
2012-04-06 15:41 2847Spring3 and REST Integration(V) ... -
Spring3 and REST Integration(IV)Controller JUnit Test and Mock/Servlet
2012-04-06 15:13 2009Spring3 and REST Integration(IV ... -
Jbehave(2)Some Improvement and POM changes
2012-03-28 23:11 1441Jbehave(2)Some Improvement and ... -
buildr(1)Introduce and Install
2011-12-23 16:37 2199buildr(1)Introduce and Install ... -
Jbehave(1) First Web Page Sample
2011-10-26 15:00 2215Jbehave(1) First Web Page Sampl ... -
WarcraftIII Problem on English Win7
2011-07-25 10:18 1956WarcraftIII Problem on English ...
相关推荐
描述部分同样如此,没有提供具体的信息,因此我们将基于Perf4J的基本特性和使用方法来展开讨论。 Perf4J的核心功能包括: 1. **微秒级计时**:Perf4J 提供了简单的API,可以在代码的关键点插入计时器,以微秒级别...
Perf4j是一个轻量级的Java性能度量库,它提供了简单的方法来度量代码执行的时间,并且能够集成到现有的日志框架中,如Logback。Perf4j的引入可以有效地帮助我们跟踪和优化应用程序的性能,特别是在大型系统中,对于...
- 使用 `org.perf4j.LoggingStopWatch` 类,可以通过创建实例并调用 `start()`、`stop()` 或 `lap()` 方法来开始、结束或记录代码块的执行时间。 - `StopWatch` 的实例可以带有一个 `tag` 参数,这个标签可以用来...
perf4j-0.9.16-log4jonly.jar
Google Perftools 是一个功能强大的 Linux 系统性能检测工具,它可以通过采样方式对程序中的 CPU 使用情况进行“画像”,从而帮助开发者对程序的性能进行优化。下面是 Google Perftools 的详细介绍: 1. 功能简介 ...
这篇教程将详细介绍perf的基本使用方法以及其在实际问题诊断中的应用。 首先,perf的核心功能包括事件采样、硬件事件统计、软件事件监控、性能计数器管理和分析报告生成。通过事件采样,perf可以收集运行时的性能...
`perf`利用硬件事件(如CPU周期、缓存命中等)来收集数据,进而分析程序的性能瓶颈,优化代码。本压缩包包含了`perf`工具本身以及相关的自动化运行脚本和库文件,便于用户进行性能测试和分析。 `perf`主要功能包括...
perf提供了多种命令来辅助性能分析: - `perf list`:列出所有可用的采样事件。 - `perf stat`:提供程序运行的概览,包括CPU利用率,判断程序是CPU密集型还是I/O密集型。 - `perf top`:实时显示系统性能统计数据,...
总的来说,通过Linux perf工具分析`alloc_page`的使用情况,我们可以获取到系统内存分配的详细信息,这有助于识别潜在的性能瓶颈,优化内存管理策略,提高系统的整体效率。同时,这也展示了perf工具的强大功能,它...
使用 Linux perf 分析应用程序性能 perf 是 Linux 中的一个性能分析工具,能够对应用程序的性能进行详细的分析。perf 由 Linux 社区维护,Intel 也为其贡献了代码。perf 的主要特点是抽象硬件,支持软件事件,可以...
Perf 是 Linux 操作系统内置的一个强大的性能分析工具,它专用于软件性能分析,尤其在32内核以上的版本中广泛使用。自Linux内核2.6.31以来,perf 已经成为开发者和系统管理员进行性能调优的重要助手。这个工具能够...
本文将详细介绍perf的基本使用方法和核心命令,帮助读者掌握这一强大的性能分析利器。 首先,perf的安装并不复杂,只要确保Linux系统的内核版本在2.6.31以上。通常,可以通过yum源或者源码方式进行安装。源码安装时...
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.16/perf4j-0.9.16.jar
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.14/perf4j-0.9.14.jar
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.13/perf4j-0.9.13.jar
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.12/perf4j-0.9.12.jar
Linux perf 用户指南 perf 是一个功能强大的性能分析工具,专门为 Linux 操作系统设计,涵盖了硬件级别和软件级别的性能...通过了解 perf 的基本机理和命令,可以更好地使用 perf 来提高 Linux 系统的性能和稳定性。
Linux运维人员和服务器管理员可以使用perf来监控系统性能,例如找出CPU密集型进程、分析内存和磁盘I/O瓶颈、跟踪系统调用等。通过perf,他们可以获取到详细的性能数据,进而优化系统配置,提升服务响应速度,确保...
【perf性能剖析工具1】是关于Linux环境下性能分析的一个主题,重点介绍了perf工具的基本使用方法。perf是Linux内核自带的一款强大的性能分析工具,适用于2.6版本以上的内核,但不支持虚拟机环境。 首先,perf的安装...
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.15/perf4j-0.9.15.jar