首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AspectJ -怀疑

AspectJ -怀疑
EN

Stack Overflow用户
提问于 2011-06-16 14:32:06
回答 1查看 795关注 0票数 0

可以使用一个方面来衡量方法调用的性能,如下面的示例所示:

代码语言:javascript
复制
public aspect MonitorRequests {
  void around() : monitoredRequestO {
    PerfStats stats = getPerfStats(thisDoinPointStaticPart);
    long start = System-currentTimeMillisO;
    proceedO;
    stats.ecunter++;
    stats.time += System.currentTimeMillisC)-start;
  }
  pointcut monitoredRequestO :
    execution(void HttpServ1et.do*(..)) && if(enabled);
    // can expose stats via JMX, dump method, getstats etc.
  public static class PerfStats { _. }
  private Map<StaticPart,PerfStats> perfStatMap • //...
  private boolean enabled;
}

默认情况下,aspect实例与Java虚拟机相关联,而不是与特定的执行流相关联,类似于静态类。下面的另一个方面使用percflow()来关联一个不同于默认的方面实例:

代码语言:javascript
复制
public aspect MonitorDatabaseRequests
  percflow(monitoredRequest() && !cflowbelow(mon-5toredRequest()) {
  void around() : monitoredRequestO {
    PerfStats stats = getPerfStats(thisJoinPointStaticPart);
    long time.= System.currentTimeMi 11 i s O ;
    proceed();
    stats.counter++;
    stats.databaseTime += accumulatedoatabaseTime;
    stats.time 4= System.currentTimeMi 11 isO-time;
  }
}

在此示例中添加percflow()声明会有什么不同

我搞不懂percflow是如何工作的,以及这与不使用它有什么不同……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-17 00:20:13

percflow是方面实例化模型。查看此处:http://eclipse.org/aspectj/doc/released/progguide/quick-aspectAssociations.html

这意味着为输入的每个cflow创建该方面的一个实例。

第一个方面是单例,因此它必须为它跟踪的所有性能统计数据存储一个映射。第二个方面根据需要实例化,因此性能统计信息被隐式存储并与适当的动态调用图相关联。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6367956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档