Page 43 - 《软件学报》2026年第6期
P. 43
2362 软件学报 2026 年第 37 卷第 6 期
集下的耗时均降至 28 s 左右, 性能提升超 28%; GNU GSL 在基线中的处理速率为 10 968.52 MB/s, 在扩展指令集
下提升至 17 465 MB/s 以上, 增幅超 60%; xz 的压缩时间从基线的 24.832 s 缩短至 22.839 s (SG2044 指令集), 优化
效果明显; K1 平台中, 以 x264 为例, 基线耗时 616.255 s, 而在 RV64GCV+B 组合下降至约 413 s, 性能提升 33%,
同样在全部指令集扩展组合中表现出性能提升. 这种性能优势在 RuyiBuild 与 Clang 编译结果中表现一致, 说明
RuyiBuild 能够准确传递指令集扩展带来的性能红利. 特别值得注意的是, 在复杂指令集扩展场景中, RuyiBuild 的
适配稳定性尤为突出. 例如, 在 RV64GCV 向量扩展下, KissFFT 在 Clang 与 RuyiBuild 编译下均较 RV64GV 基础
指令集提升约 2.5%; 在 SG2044 全指令集下, SQLite3 的单次操作时间 (Clang 161.048 ms、RuyiBuild 163.231 ms)
均优于其他组合, 且两者偏差仅 1.36%. 这一结果证实, RuyiBuild 无需人工干预即可实现与 Clang 相当的优化效
果, 其自动化适配机制能够有效应对 RISC-V 指令集碎片化带来的挑战, 为跨平台软件部署提供了高效且可靠的
技术路径.
表 3 RuyiBuild 指令集适配效果 (K1)
x264 SQLite3 GNU GSL
指令集 Clang RuyiBuild 偏差率 Clang RuyiBuild 偏差率 Clang RuyiBuild 偏差率
(s) (s) (%) (ms) (ms) (%) (MB/s) (MB/s) (%)
基线RV64GC 616.255 - - 288.124 - - 2 516.19 - -
RV64GCV+B 411.444 413.431 0.48 300.632 301.542 0.30 3 589.45 3 563.34 −0.73
RV64GV 429.320 428.996 −0.08 305.687 306.493 0.26 3 524.21 3 393.45 −3.71
RV64GCV 418.791 419.725 0.22 302.606 303.089 0.16 3 569.60 3 424.79 −4.06
RVA23 409.888 410.649 0.19 300.364 303.245 0.96 3 469.40 3 450.42 −0.55
K1 412.358 410.511 −0.45 299.531 301.479 0.65 3 485.93 3 447.82 −1.09
xz KissFFT Pixman
指令集 Clang RuyiBuild 偏差率 Clang RuyiBuild 偏差率 Clang RuyiBuild 偏差率
(s) (s) (%) (s) (s) (%) (MP/s) (MP/s) (%)
基线RV64GC 70.931 - - 194 353 - - 39.58 - -
RV64GCV+B 66.390 67.066 1.02 195 862 196 391 0.27 137.93 134.2 −2.70
RV64GV 71.324 72.404 1.51 195 527 197 322 0.92 138.04 123.01 −10.89
RV64GCV 70.917 70.979 0.09 196 897 196 265 −0.32 136.33 136.23 −0.07
RVA23 66.328 66.629 0.45 195 754 196 276 0.27 138.37 135.66 −1.96
K1 66.535 66.305 −0.35 195 764 196 733 0.49 137.63 135.54 −1.52
4.5 实验结果讨论
实验数据证明了 RuyiBuild 的运行性能高度接近基于 Clang 的程序员手动设定编译. RV64GCV+B、RV64GV、
RV64GCV、RVA23、SG2044 这 5 个指令集在 SG2044 开发板上的 Wilcoxon 检验结果 (p 值), 分别为 0.843 75、
0.687 5、1.0、0.687 5、0.562 5; 在 K1 开发板上的 Wilcoxon 检验结果 (p 值), 分别为 0.843 75、1.0、0.687 5、0.687 5、
0.843 75. 可以看出, p 值均大于 0.05, 说明在显著性水平 0.05 下, Clang 与 RuyiBuild 的性能差异均不显著. 在
98.3% (59/60) 的测试用例和指令集组合下, 如 x264 在 RV64GCV+B 扩展下 Clang 27.353 s vs. RuyiBuild 28.045 s
(偏差仅 2.53%); GNU GSL 在 RV64GCV 下 Clang 18 212.91 MB/s vs. RuyiBuild 17 465.15 MB/s (偏差−4.11%),
RuyiBuild 全自动生成的二进制文件性能与开发者使用 Clang 手动指定目标 ISA 编译的版本高度接近, 其中
91.7% (55/60) 偏差<3%, 最大偏差−10.89% 出现在 K1 平台 RV64GCV 配置下运行 Pixman. 这充分证明了 RuyiBuild
非侵入式捕获 LLVM IR 并在部署阶段进行自动化、目标感知优化的有效性. 其性能损失微乎其微, 却换来了无需
修改源码/构建系统的巨大便利性和对未来任意 RISC-V 扩展组合的潜在支持能力, 这是传统 IFUNC (需源码级修
改) 和 Multilib (需预编译海量组合) 无法比拟的. RuyiBuild 的核心创新在于其非侵入式的设计, 通过精心设计的
编译工具包装 (wrapper) 和环境变量机制, 它实现了对现有软件源码和构建系统 (如 Autotools、CMake) 的零修改.
这种透明性确保了 RuyiBuild 能够无缝集成到现有的 Linux 发行版 (如 openEuler) 构建流程和 RPM/Deb 软件包管

