Page 46 - 《软件学报》2024年第6期
P. 46
2622 软件学报 2024 年第 35 卷第 6 期
selective2objH 的精度设置下, DDoop 增量框架相比原始 Doop 框架的加速比最为明显. 在我们的实验评估中,
DDoop 增量框架在 selective2objH 的精度设置下可实现最高约 36×的分析加速 (CheckStyle).
40
DDoop 对比 Doop 的加速比 参考值 1
DDoop 对比 Doop 的加速比 20
30
10
0
Cl 1obj 2objH 1callsite 1type 2typeH selective2objH Cl 1obj 2objH 1callsite 1type 2typeH selective2objH Cl 1obj 2objH 1callsite 1type 2typeH selective2objH Cl 1obj 2objH 1callsite 1type 2typeH selective2objH Cl 1obj 2objH 1callsite 1type 2typeH selective2objH
ErrorProne
Jedis ErrorProne ZooKeeper PMD CheckStyle
图 8 DDoop 对 Doop 的运行时间加速比
为了展示剪枝优化对分析效率的影响, 我们分别在图 7 (开启剪枝选项) 和图 9 (关闭剪枝选项) 中展示了
DDoop 增量框架在运行时的前端、后端更加细节的耗时信息. 我们可以发现, 在关闭剪枝优化选项时, 增量过程
中前端会更加耗时, 关闭剪枝优化选项的前端耗时平均比开启剪枝优化选项要多 41.3%. 这让 DDoop 框架在增量
时对比原版 Doop 框架的优势有所缩小. 此时, DDoop 增量框架相比原始 Doop 框架的平均加速比约为 4, 在
selective2objH 的精度设置下可实现最高约 27×的分析加速.
Doop 平均时间 DDoop 增量平均前端时间
DDoop 首次全量前端时间 DDoop 增量平均时间
DDoop 首次全量时间
10 000
运行时间 (s) 1 000
100
Cl 1obj 2objH 1callsite 1type 2typeH selective2objH Cl 1obj 2objH 1callsite 1type 2typeH selective2objH Cl 1obj 2objH 1callsite 1type 2typeH selective2objH Cl 1obj 2objH 1callsite 1type 2typeH selective2objH Cl 1obj 2objH 1callsite 1type 2typeH selective2objH
Jedis ZooKeeper PMD CheckStyle
图 9 DDoop 与 Doop 的实际运行时间对比 (关闭剪枝选项)
需要注意的是, 增量分析并不能保证在任何场景下、对任何项目的变更都能提供明显的性能优势, 特别是对
于可能影响到项目的较大范围的变更, 对其进行增量分析的耗时甚至可能会比重新全量分析更长. 在图 7 和图 9
中, 我们可以观察到这样一个稍显异常的例子: 在 ZooKeeper 代码库的 selective2objH 精度设置下, DDoop 增量框
架在增量过程中的平均消耗时间略差于 Doop 框架, 并且主要的耗时集中在后端评估部分, 我们对应给出了这种