gpt4 book ai didi

用于性能跟踪的 Java 自定义注解

转载 作者:行者123 更新时间:2023-11-29 05:45:02 24 4
gpt4 key购买 nike

我想衡量项目中各种功能的性能。这将在多个线程上运行,所以现在我有这样的东西

long start = System.currentTimeMillis();
first();
StatsTracker.putTime("first", System.currentTimeMillis() - start);
...
start = System.currentTimeMillis();
second();
StatsTracker.putTime("second", System.currentTimeMillis() - start);

其中 StatsTracker 是一个静态类,它只跟踪性能图。

我是新手,刚开始写自定义注解,网上看的几个教程有点迷糊。我最终想要的是这样的

@StartTime("first")
first();
@EndTime("first")
...
@StartTime("second")
second();
@EndTime("second")

然后对于开始/结束时间注释,我希望这两个注释记录当前系统时间,然后将那个运行时间放入一个映射中(记录平均性能)。

编辑:在函数定义之前有这样的东西可能更自然:

@TrackTime("first")
public void first() { ... }

感谢任何帮助。谢谢!

最佳答案

注释只是元数据。他们什么都不做。

框架可以使用反射来获取方法和类上的注解来对它们做一些事情。这意味着,为了做您想做的事,您需要使用 AOP 来查找方法上的注释并测量它们花费的时间。

存在这样的框架(例如 Jamon 与 Spring beans 的结合)。但是你自己写一个比你现在做的要花更多的时间,并且可能会迫使你改变你的应用程序的架构方式,以便使用某种形式的依赖注入(inject)。或者,例如,您必须使用 AspectJ 检测字节码。

所以我的建议是:不要更改任何东西,或者使用依赖注入(inject)框架并使用现有产品(例如 jamon),或者编写自定义 AOP 拦截器来测量组件方法所花费的时间.

关于用于性能跟踪的 Java 自定义注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com