`
sillycat
  • 浏览: 2563600 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用Perf4J来检查方法性能

阅读更多
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的时间比较长。

分享到:
评论

相关推荐

    perf4j perf4j perf4j

    描述部分同样如此,没有提供具体的信息,因此我们将基于Perf4J的基本特性和使用方法来展开讨论。 Perf4J的核心功能包括: 1. **微秒级计时**:Perf4J 提供了简单的API,可以在代码的关键点插入计时器,以微秒级别...

    Perf4j整合Logback

    Perf4j是一个轻量级的Java性能度量库,它提供了简单的方法来度量代码执行的时间,并且能够集成到现有的日志框架中,如Logback。Perf4j的引入可以有效地帮助我们跟踪和优化应用程序的性能,特别是在大型系统中,对于...

    perf4j性能监控1

    - 使用 `org.perf4j.LoggingStopWatch` 类,可以通过创建实例并调用 `start()`、`stop()` 或 `lap()` 方法来开始、结束或记录代码块的执行时间。 - `StopWatch` 的实例可以带有一个 `tag` 参数,这个标签可以用来...

    perf4j-0.9.16-log4jonly.jar

    perf4j-0.9.16-log4jonly.jar

    google perftools性能分析工具说明

    Google Perftools 是一个功能强大的 Linux 系统性能检测工具,它可以通过采样方式对程序中的 CPU 使用情况进行“画像”,从而帮助开发者对程序的性能进行优化。下面是 Google Perftools 的详细介绍: 1. 功能简介 ...

    Linux高级系统级性能分析工具perf

    这篇教程将详细介绍perf的基本使用方法以及其在实际问题诊断中的应用。 首先,perf的核心功能包括事件采样、硬件事件统计、软件事件监控、性能计数器管理和分析报告生成。通过事件采样,perf可以收集运行时的性能...

    perf 性能测试工具

    `perf`利用硬件事件(如CPU周期、缓存命中等)来收集数据,进而分析程序的性能瓶颈,优化代码。本压缩包包含了`perf`工具本身以及相关的自动化运行脚本和库文件,便于用户进行性能测试和分析。 `perf`主要功能包括...

    性能调优工具-perf介绍

    perf提供了多种命令来辅助性能分析: - `perf list`:列出所有可用的采样事件。 - `perf stat`:提供程序运行的概览,包括CPU利用率,判断程序是CPU密集型还是I/O密集型。 - `perf top`:实时显示系统性能统计数据,...

    Linux perf 工具使用

    总的来说,通过Linux perf工具分析`alloc_page`的使用情况,我们可以获取到系统内存分配的详细信息,这有助于识别潜在的性能瓶颈,优化内存管理策略,提高系统的整体效率。同时,这也展示了perf工具的强大功能,它...

    使用Linux perf分析应用程序性能 - Jinyao 1

    使用 Linux perf 分析应用程序性能 perf 是 Linux 中的一个性能分析工具,能够对应用程序的性能进行详细的分析。perf 由 Linux 社区维护,Intel 也为其贡献了代码。perf 的主要特点是抽象硬件,支持软件事件,可以...

    你知道perf学习-linux自带性能分析工具怎么用?.docx

    Perf 是 Linux 操作系统内置的一个强大的性能分析工具,它专用于软件性能分析,尤其在32内核以上的版本中广泛使用。自Linux内核2.6.31以来,perf 已经成为开发者和系统管理员进行性能调优的重要助手。这个工具能够...

    perf性能剖析1

    本文将详细介绍perf的基本使用方法和核心命令,帮助读者掌握这一强大的性能分析利器。 首先,perf的安装并不复杂,只要确保Linux系统的内核版本在2.6.31以上。通常,可以通过yum源或者源码方式进行安装。源码安装时...

    perf4j-0.9.16.jar

    性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.16/perf4j-0.9.16.jar

    perf4j-0.9.14.jar

    性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.14/perf4j-0.9.14.jar

    perf4j-0.9.13.jar

    性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.13/perf4j-0.9.13.jar

    perf4j-0.9.12.jar

    性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.12/perf4j-0.9.12.jar

    Linux perf user guide

    Linux perf 用户指南 perf 是一个功能强大的性能分析工具,专门为 Linux 操作系统设计,涵盖了硬件级别和软件级别的性能...通过了解 perf 的基本机理和命令,可以更好地使用 perf 来提高 Linux 系统的性能和稳定性。

    linux perf v5.0.0源码文件

    Linux运维人员和服务器管理员可以使用perf来监控系统性能,例如找出CPU密集型进程、分析内存和磁盘I/O瓶颈、跟踪系统调用等。通过perf,他们可以获取到详细的性能数据,进而优化系统配置,提升服务响应速度,确保...

    perf性能剖析工具1

    【perf性能剖析工具1】是关于Linux环境下性能分析的一个主题,重点介绍了perf工具的基本使用方法。perf是Linux内核自带的一款强大的性能分析工具,适用于2.6版本以上的内核,但不支持虚拟机环境。 首先,perf的安装...

    perf4j-0.9.15.jar

    性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.15/perf4j-0.9.15.jar

Global site tag (gtag.js) - Google Analytics