我想知道使用AspectJ是否存在任何重大性能问题,如果它被用于拦截应用程序中的每个(或最多)方法。当然,性能也会受到每次拦截执行的建议的影响。
为了这个例子,让我们说它非常简单的建议,运行速度非常快,开销最小/没有内存泄漏。由于每种方法都被拦截,是否还有重要的性能杀手呢?
答案 0 :(得分:1)
它肯定不会加速您的代码。 我已经看到了可怕的结果,在调用者和被调用者之间添加了19个堆栈帧,以其他方式直接进行快速事件处理。足以说AOP在我心中已经死了。
如果幸运的话,您可能已经编译了代码,它由jit编译器内联,并且仅添加您选择添加的实际工作,就像您在原地编写代码一样。最糟糕的情况是,例如弹簧/ osgi乱扔在那里,您最终会得到一些无法使用的蜗牛。