AspectJ 通知的延迟绑定实现分析与性能评估
1. 基准测试分析
在对 AspectJ 通知的延迟绑定实现进行评估时,进行了多组基准测试。静态启动基准测试和宏观基准测试显示,仅存在延迟绑定通知编织实现并不会减慢纯 Java 程序的运行速度。这是因为在没有切面存在时,大部分编织基础设施可以被短路。
当程序中存在可能应用于任何字节码的通知时,扫描字节码会影响类加载速度。特别是 ajc ltw 受影响程度比其他实现更大。微观测量类加载时,“500MethodsExec” 和 “1000MethodsLoaded” 结果显示,VM 内编织相比 ajc ltw 有显著性能提升(约 6.8 秒或 4.7 倍),方法级编织相比类级编织也有一定提升(约 0.8 - 1.5 秒或 1.7 - 6.7 倍)。
特殊通知执行基准测试结果表明,解释器编织器和 VM 内字节码编织器在启动时间上没有统计学上的显著差异。但解释器调度在重复执行每个基准测试时斜率明显更高,成本也更高。不过在完整的混合实现中,由于频繁执行的方法会被 JIT 编译器重新编译,这种开销可能会最小化。
综合来看,VM 外部实现虽然在某些情况下是必要的,但在执行通知延迟绑定编织时存在固有的性能限制。这些限制源于 VM 外部编织器必须复制其无法在 VM 中访问的结构,并且只能进行类级粒度的编织。
| 基准测试类型 | 性能表现 |
|---|---|
| 静态启动和宏观基准测试 | 无切面时不影响纯 Java 程序速度;有通知时影响 |
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



