关于UtilTimerStack类的使用--XWork2、Struts2内置性能诊断类

关于UtilTimerStack类的使用--XWork2、Struts2内置性能诊断类


====================================

author: Vange 

date:2010-03-21
====================================

一、UtilTimerStack做什么用的?
这个本来是Xwork2(Struts2的核心)的相关的工具类,可以用来测试一些逻辑操作所消耗的时间(以毫秒为单位),其本身使用一个ArrayList作为存放ProfilingTimerBean的容器,而行为以Stack栈(后入先出)为主。在打印的时候支持缩进显示,显示相关的调用关系。类ProfilingTimerBean主要是用来记录一些相关的信息,例如主要标识、开始时间、结束时间。

二、UtilTimerStack如何使用?
UtilTimerStack的调用方法不多且都为静态函数,但在调用之前必须先开启诊断功能,

主要有以下三种方法开启:

  •    在启动时加入参数: -Dxwork.profile.activate=true
  •    在使用前、或者静态代码区、或者Servlet的初始化、或者Filter的初始化 加入代码:

                           UtilTimerStack.setActivate(true);
                      或者 System.setProperty("xwork.profile.activate", "true");
                      或者 System.setProperty(UtilTimerStack.ACTIVATE_PROPERTY, "true");

  •    也支持xml来定义相关拦截器(必须开启dev模式和加入Profiling拦截器):

                     <action ... > 
                      ...
                      <interceptor-ref name="profiling">
                          <param name="profilingKey">profiling</param>
                      </interceptor-ref>
                      ...
                     </action>
                     再通过URL访问: http://host:port/context/namespace/someAction.action?profiling=true
                     或者通过代码加入请求参数: ActionContext.getContext().getParameters().put("profiling", "true);

指定超时打印功能,只有当运行时间超过时才会进行记录,开启方法:

  •     在启动时加入参数: -Dxwork.profile.mintime=1000
  •     或者代码加入:System.setProperty(UtilTimerStack.MIN_TIME, "" + 1000);


例子代码:


代码输出:
0
1
2
3
2010-3-21 16:16:52 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: [1828ms] - test used time:
  [1828ms] - 0 times
    [1828ms] - 1 times
      [1516ms] - 2 times

 


三、UtilTimerStack内部机制?

ProfilingTimerBean类结构
    主要成员:
    List<ProfilingTimerBean> children;//记录子节点为,打印时需要
    ProfilingTimerBean parent = null;//记录父节点,顶点的父节点为null
    String resource;//主要标识,名称
    long startTime;//开始时间
    long totalTime;//结束时间



UtilTimerStack的压栈(push)动作:

   

UtilTimerStack的出栈(pop)动作:

 

 

对UtilTimerStack类也就到这里,如果有不正确之处,还望多多指正。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值