【问题标题】:Performance Overhead of AOPAOP 的性能开销
【发布时间】:2012-01-16 13:26:13
【问题描述】:

我想知道如果使用 AspectJ 来拦截应用程序中的每个(或大多数)方法,是否存在任何重大的性能问题。当然,性能也会受到每次拦截时执行的建议的影响。

为了这个例子,假设它非常简单,运行速度非常快,开销最小/没有内存泄漏。由于每个方法都被拦截,是否仍然存在显着的性能杀手?

【问题讨论】:

  • 你在拦截中所做的开销可能会高得多,除非它是微不足道的。例如。如果你登录到一个文件,那会更高。
  • 您使用的是编译时编织还是运行时编织?

标签: java performance aspectj


【解决方案1】:

它肯定不会加速您的代码。 我已经看到了可怕的结果,其中在调用者和被调用者之间添加了 19 个堆栈帧,用于其他直接的快速事件处理方法。我只想说 AOP 在我看来已经死了。

如果幸运的话,您可能已经编译了由 jit 编译器内联的代码,并且只是添加了您选择添加的实际工作,就好像您在适当的位置编写了它一样。最坏的情况,比如那里的 spring/osgi 废话,你最终会得到一些无法使用的蜗牛。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 2016-12-19
    • 2023-04-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多