公司动态

Rust 1.98 新 API 助力:浮点运算速度大幅提升,数值代码加速可期!

📅 2026/8/12 16:14:44
Rust 1.98 新 API 助力:浮点运算速度大幅提升,数值代码加速可期!
整数求和速度快先从整数示例作为性能基准告知 Rust 生成现代硬件支持指令用 RUSTFLAGS-C target-cpux86-64-v3 编译代码。给出对 int64 类型切片求和的 Rust 函数 naive_sum_i64并在 NumPy 中创建整数数组进行基准测试。测量求和速度发现每个值仅需 0.5 条 CPU 指令推测编译器使用 SIMD 指令实际测试也证实使用 SIMD 指令后 CPU 能快速对整数求和。浮点求和速度慢创建一百万个浮点值实现简单浮点求和函数 naive_sum比较整数与浮点求和性能发现浮点求和慢且编译器未使用 SIMD 浮点操作。原因是浮点运算不满足结合律如 a (b c) 不一定等于 (a b) c编译器为保证结果与未优化代码相同不会对浮点操作重新排序或进行可能改变结果的优化。Rust 的新代数运算符告知编译器何时灵活处理从 Rust 1.98 版本开始有新特性除常规浮点算术运算外还有新的“代数”算术运算符允许编译器利用实数代数性质优化浮点运算。示例优化的成对求和对大量浮点数求和可使用算法最小化舍入误差如 numpy.sum() 用的成对求和算法。在 Rust 中实现该算法添加最上面两个浮点数用普通加法达到阈值后用代数加法。该实现比 NumPy 快且与 NumPy 精度大致相同代码结构更简洁。另一个示例平方差之和计算两个数组平方差之和给出普通算术运算符和代数运算符的实现。测试结果相似测量性能发现使用代数运算使代码运行速度快一倍。加速数值代码成对求和算法说明既需严格运算符保证准确性也需宽松运算符追求速度。用 Rust 编写数值代码可受益等能使用 Rust 1.98 时可尝试未使用 Rust 的也可考虑切换。还提到加速 Python 代码的方法及订阅时事通讯学习 Python 工具技术的信息。