跳到正文
arXiv cs.AI· Zhiqiang Yuan, Chong Wang, Zhenhao Zhou, Junwei Liu, Xin Peng·· 11 小时前AI 评分39

C 到 Rust 转译为何性能下降?研究揭示九类问题并用 LLM 优化规则恢复性能

Where Does the Performance Go? Understanding and Recovering Performance Regressions in C-to-Rust Translation

AI 导读

研究在 20 个真实 C 项目及其 C-to-Rust 转译版本上发现,用于分析的 8 个项目中 19 项操作有 12 项转译后 Rust 比原 C 慢 3% 以上,最高慢 62.2%,并归因于九类反复出现的性能问题。作者提出基于 LLM 的工具,将这些问题编码为可复用优化规则,在 12 个留出项目的 41 项操作上全部保持 C 输出一致,其中 40 项快于转译版本、18 项快于原 C。

正文 · AI 翻译

查看 PDF HTML(实验性)

摘要:Rust 正日益被采用为 C 的内存安全继任者,诸如 \crust{} 之类的转译器能够迁移整个 C 项目并保持其行为不变。然而,保持行为不变并不保证保持性能不变。我们在 20 个真实世界的 C 项目及其 \crust{} 翻译版本上研究了这一差距。在用于分析的八个项目中,翻译后的 Rust 在 19 项操作中有 12 项比原始 C 慢 3\% 以上,最多慢 62.2\%。通过比较每一对 C--Rust 的执行开销剖析、优化后的 LLVM IR 以及编译器优化备注,我们将这些性能下降追溯到九个反复出现的性能问题,涵盖残余运行时开销、错失的编译器优化以及 C 风格的源码模式,并为每个问题推导出优化方向。随后我们提出 \ourtool{},一种基于 LLM 的方法,将这些性能问题编码为可复用的优化规则,以恢复翻译后 Rust 的性能。\ourtool{} 对每个项目进行剖析以定位热点函数,并将其与规则特定的模式进行匹配。随后 LLM 在重写前会结合项目上下文检查每条规则的重写前置条件,且仅当重写同时通过功能验证和性能验证时才会被保留。在来自十二个留出项目的 41 项操作上,\ourtool{} 在所有测试工作负载上均保持了 C 的输出,并在 40 项操作上相比 \crust{} 翻译版本实现了加速,其中 18 项最终比原始 C 更快。在两者均保持 C 输出的 37 项操作中,它在 31 项上优于通用编码智能体 \codex{},并在 41 项操作中的 34 项上优于其自身无规则引导的变体。
主题: 人工智能(cs.AI);编程语言(cs.PL)
引用为: arXiv:2610.23044 [cs.AI]
  (或此版本的 arXiv:2610.23044v1 [cs.AI])
  https://doi.org/10.48550/arXiv.2610.23044

由 DataCite 颁发的 arXiv DOI(待注册)

提交历史

来自:Zhiqiang Yuan [查看邮箱]
[v1] 2026年10月16日星期五 07:22:54 UTC(560 KB)

来源:arXiv cs.AI · arxiv.org