我正在编写一个计算量很大的程序,在调试模式下运行速度慢得令人恼火.

我的程序也受到整数溢出的困扰,因为我正在从u8个数组读取数据,u8个类型通过类型推断扩散到意外的地方,Rust更喜欢溢出,而不是将整数提升到更大的类型.

在释放模式下生成将禁用溢出判断:

cargo run --release

如何在启用优化and次运行时溢出判断的情况下构建Rust可执行文件?

推荐答案

您可以在发布模式with overflow checks enabled下编译:

[profile.release]
overflow-checks = true

这会将-C overflow-checks=true传递给编译器.在Rust的早期版本中,overflow-checksdebug-assertionsswitch 的一部分,因此在某些情况下可能需要使用它.

其他时候,最简单的方法可能是build in test or dev mode with optimizations:

[profile.dev]
opt-level = 3

Rust相关问答推荐

通用池类型xsx

在rust中如何修改一个盒装函数并将其赋回?

如何容器化Linux上基于Rust的Windows应用程序的编译过程?

trait声明中的生命周期参数

当Option为None时,Option数组是否占用Rust中的内存?

支持TLS的模拟HTTP服务器

我可以在不收集或克隆的情况下,将一个带有Item=(key,val)的迭代器拆分成单独的key iter和val iter吗?

无符号整数的Rust带符号差

borrow 是由于对 `std::sync::Mutex>` 的解引用强制而发生的

Rust:为什么 Pin 必须持有指针?

&self 参数在 trait 的功能中是必需的吗?

当你删除一个存在于堆栈中的值时,为什么 rust 不会抱怨

不能将 `*self` borrow 为不可变的,因为它也被borrow 为可变的 - 编译器真的需要如此严格吗?

如何在 Rust 中将 bson::Bson 转换为 Vec

为什么1..=100返回一个范围而不是一个整数?

如何在 nom 中构建负前瞻解析器?

为什么这个值在上次使用后没有下降?

将 (T, ()) 转换为 T 安全吗?

有没有办法使用 NASM 语法进行内联汇编?

为移动和借位的所有组合实现 Add、Sub、Mul、Div