为计时方法调用编写java注释

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

我想编写一个Java注释,它会重复方法调用的时间。如下所示:

@TimeIt
public int someMethod() { ... }

当调用此方法时,它应该在控制台上输出此方法所用的时间。

我知道如何在python中这样做,这就是我想要它做的:

from time import time, sleep

def time_it(func):
    def wrapper(*args, **kwargs):
        start = time()
        func(*args, **kwargs)
        stop = time()
        print "The function", func.__name__, " took %.3f" % (stop - start)
    wrapper.__name__ = func.__name__
    return wrapper

@time_it
def print_something(*args, **kwargs):
    print "before sleeping"
    print args, kwargs
    sleep(3) # wait 3 seconds
    print "after sleeping"

print_something(1, 2, 3, a="what is this?")

所以我的问题是?我在哪里找到一些文档来写这样的东西,我试过apt文档,没有运气。有人能帮我写这样的东西吗?

提问于
用户回答回答于

AFAIK,Tomasz说这不能用注释完成。我认为这种困惑源自这样的事实:Python装饰器和Java注释共享相同的语法,但在它们提供的行为方面完全不同!

注释是元数据附加到您的类/方法/字段。这篇博文介绍了使用AOP的计时方法。尽管它使用Spring,但基本前提仍然一样。如果你适合使用AOP编译器,那么翻译代码不应该太困难。另一个参考(特定于弹簧)在这里

如果您的目标是为您的应用程序提供整体方法计时而不使用全面的分析器,则可以使用hprof来收集总体执行统计信息。

用户回答回答于

简单地说:不能!

注释不是与代码一起自动启动的代码片段,它们只是注释,其他程序可用于加载或运行代码的其他程序可以使用这些信息。

你需要的是AOP:面向方面的编程。

扫码关注云+社区