java - AOP 的性能开销

标签 java performance aspectj

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

为了这个例子,让我们假设它是非常简单的建议,它运行得非常快并且开销最小/没有内存泄漏。由于每个方法都被拦截,是否仍然存在显着的性能 killer ?

最佳答案

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

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

关于java - AOP 的性能开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8880648/

相关文章:

Spring 4+方面

java - Spring AOP 中代理的使用

Java HashMap 重复存储桶条目

java - zk线多组件

java - JBoss AS 7.1 JBREM000200 : Remote connection failed: java. io.IOException:已建立的连接被主机中的软件中止

android - 通过 Socket.io websocket 从我的应用程序向特定的 socketId 发送 json 和音频文件

mysql - Activiti mysql 性能调优(索引)

java - AOP 或 APT 用于覆盖父类(super class)的方法

java - 在 JOOQ/PostgreSQL 中使用自定义类型更新字段

python - 如何像在 Python 2.7 上一样快地获取此 Python 3 代码?