Page 17 - 《软件学报》2025年第12期
P. 17
5398 软件学报 2025 年第 36 卷第 12 期
位优先搜索. 图 5 给出了每个程序中 FI3D 基于函数浮点指令差异性分析过滤掉的函数数目所占程序中总的函数
个数的比例; FI3D 平均能够过滤 44.1% 的函数, 过滤比例范围为 7.7%–66.7%, 这能有效缩小后续 Delta-Debugging
的搜索空间.
表 3 编译优化结果不一致性定位结果
Localization results Time (s)
Program
PLiner FI3D PLiner FI3D Improvement (%)
CG.A failed [sparse, sprnvc] NA 8.3 NA
CG.B [sparse:741-795] [sparse:741-795] 369.8 256.4 30.7
MG.A failed [resid:499, psinv:1 191] NA 76.8 NA
SP.A [exact_solution:44] [exact_solution:44] 282.8 184.9 34.6
SP.B [exact_solution:44] [exact_solution:44] 1 331.3 847.1 36.4
LU.A [blts:109-197] [blts:109-197] 546.8 445.1 18.6
sin [sin_e:254] [sin_e:254] 2.4 1.9 20.8
sinc [sin_e:319] [sin_e:319] 2.7 2.2 18.5
cos [cos_e:262] [cos_e:262] 2.0 1.5 25.0
dilog failed [xge0:234-245, series_2:195] NA 2.5 NA
expint_E1 [expint_E1_impl:419] [expint_E1_impl:419] 3.6 3.1 13.9
expint_E2 [cheb_eval_e:all] [cheb_eval_e:all] 1.5 1 33.3
clausen [angle_res_pos_err_e] [angle_res_pos_err_e] 1.5 0.9 40
Ci [sin_e:601] [sin_e:601] 2.9 2.5 13.8
bessel_J1 failed [cheb_eval_e:216, bessel_J1_e:290] NA 3.9 NA
bessel_y0 [cos_e:230] [cos_e:230] 1.9 1.5 21.1
arclength [do_fun] [do_fun] 2.6 1.2 53.8
dft [dft:82] [dft:82] 3.4 2.9 14.7
80
70 66.7 66.7 66.7
60.0
60 57.1 50.0 50.0 57.1 50.0
函数比例 (%) 40 42.8 46.7 37.5 37.5 40.0 33.3
50
30
20 15.4
10 7.7 7.7
0
CG.A CG.B MG.A SP.A SP.B LU.A sin sinc cos dilog expint_E1 expint_E2 clausen Ci bessel_J1 bessel_y0 arclength dft
程序
图 5 FI3D 过滤函数比例示意图
表 3 中 Time 列给出了 PLiner 和 FI3D 的定位时间开销, Improvement 列给出了 FI3D 对于 PLiner 的性能提升
百分比 (PLiner 定位时间减去 FI3D 定位时间再除以 PLiner 定位时间). 对于 PLiner 定位失效的情况, 时间开销和
性能提升比例均设置为 NA. 对于 PLiner 定位成功的 14 个测试用例, FI3D 能够获得平均 26.8% 的性能提升, 性能
提升比例范围为 13.8%–53.8%. 这有效反映了浮点指令差异性引导对问题代码搜索定位效率提升的作用.
表 4 给出了每个测试程序中问题函数在所有函数浮点指令差异性系数中的排名, m/n 表示问题函数在所有 n
个函数的浮点指令差异性系数中位于第 m 位, 多个问题函数使用&连接. 所有程序的问题函数均排在函数指令差
异性系数序列的前部, 特别是 MG.A、SP.A、SP.B 和 LU.A, 其问题函数在全部 10 余个函数中排名前几位. 排名
较差的 CG 和 Ci, 其问题函数也位于差异性系数排名的前半部分. 这充分说明基于函数编译优化前后浮点指令序
列的差异性系数对待定位文件/函数进行排序, 能够有效引导 Delta-Debugging 快速定位问题代码.

