光一样的少年|大规模下加速源代码分析( 五 )


光一样的少年|大规模下加速源代码分析
光一样的少年|大规模下加速源代码分析图 6 ACFG 到 RCFG 减少示例
4 实证评估
光一样的少年|大规模下加速源代码分析表 2 通过 16 个分析 , 减少了 DaCapo 和 SourceForge 数据集的分析时间并减少了图形大小 。CFG 列提供了基线方法中的分析时间 , RCFG 列提供了我们方法中的分析时间 。RCFG 分析时间包括注释和缩减开销 。R 列减少了分析时间 , %R 提供了减少了分析时间的百分比 。在“图形大小(缩减百分比)”下 , 列 N , E , B , L 代表节点 , 边 , 分支和循环 。该表还提供了分析时间中减少量(R)和减少量百分比(%R)的最小值 , 最大值 , 平均值和中位数 。
4.1 实验设置4.1.1 分析
表 2 列出了用于评估方法的 16 个流分析的集合 。 该集合主要包含在超大规模源代码挖掘任务或编译器中的源代码优化中使用的分析 。
4.1.2 数据集
我们使用了两个 Boa 数据集:DaCapo 和 SourceForge 。
4.1.3 方法论
我们将方法(RCFG)的执行时间与基准的执行时间进行了比较 。 执行基准分析的时间是在数据集中所有控制流图(CFG)上运行分析的总时间 , 其中 , 我们分析方法的执行时间是在所有控制图上运行分析的总时间 。 数据集中的简化控制流图(RCFG)以及所有运行时开销 。 我们的方法中的各种运行时开销包括标识和注释相关节点的时间以及执行控制流图(删除不相关节点)以减少控制流图(RCFG)的时间 。
4.2 分析时间的减少我们测量了 RCFG 的分析时间相对于基线的减少 。 分析时间的减少源于 RCFG 的图形大小相对于 CFG 的减小 , 因此为了了解分析时间的减少 , 我们从节点 , 边 , 分支和循环的角度测量了图形大小的减小 。 我们在数据集中的所有图形上累积了这些指标 。 结果在表 2 中的“图形大小(减少百分比)”下显示了软测量 。 图形大小的减少与分析时间的减少高度相关 。 图形大小的减少程度越高 , 分析时间的减少程度就越大 。
总而言之 , 可以看出 , 对于 16 个分析中的 11 个 , 我们的技术能够显着减少分析时间(11 个分析平均减少 60%以上 , 所有分析平均减少 40%以上) 。 使用节点 , 边缘 , 分支和循环的图形缩减可以解释这种缩减 。 此外 , 表 3 列出了代码的相关部分 , 以进行各种分析 , 以提供有关缩减的更多见解 。
光一样的少年|大规模下加速源代码分析表 3 有关各种分析的相关源代码部分
对于 5 个分析 , 分析时间的减少很小或没有减少 。 这 5 种分析的图形大小减少幅度也很小 。 这些分析是:恒定传播(CP) , 复制传播(CP’) , 无效代码(DC) , 活动变量(LV)和到达定义(RD) 。 我们可以得出结论 , 对于图形尺寸减小不大(或相关语句为通用语句)的分析 , RCFG 可能会产生开销 , 从而导致分析时间比“基线”长 。
此外 , 可以在运行分析之前通过在评估规则的预分析遍历过程中计算相关节点的数量(从我们的静态分析中提取)以标记相关节点 , 从而从分析中检测是否可以减小 CFG 大小 , 从而有助于分析 。 我们在分析前遍历中计算相关节点与所有节点的数量之比 , 并决定是在运行分析之前修剪还是跳过修剪而仅运行分析 。
同一套方法可以为各种分析证明不同数量的相关陈述 。 例如 , 图 7 对于 PM , 相关的语句较少 , 因此有更多的减少机会 。 而如果考虑 LV 分析 , 所有包含变量定义和变量访问的语句都是相关的 , 则图 7 所示的三种方法中的所有语句都是相关的 , 因此无法执行减少操作 。


推荐阅读