修改配置文件

[profile.release]
opt-level = "z"       # 优化代码尺寸
lto = true            # 启用链接时优化 (Link Time Optimization)
codegen-units = 1     # 降低代码生成单元数,增加优化时间但减少二进制大小
panic = "abort"       # 使用 'abort' 而不是 'unwind' 来处理 panic
strip = "debuginfo"   # 移除调试信息

参考:

https://juejin.cn/post/7374685303883186228

配置示例
生成更小的可执行文件
toml 代码解读复制代码[profile.release]
opt-level = "z" # 优化代码尺寸
lto = true # 启用链接时优化 (Link Time Optimization)
codegen-units = 1 # 降低代码生成单元数,增加优化时间但减少二进制大小
panic = "abort" # 使用 'abort' 而不是 'unwind' 来处理 panic
strip = "debuginfo" # 移除调试信息

生成更快的可执行文件
toml 代码解读复制代码[profile.release]
opt-level = 3 # 最大程度优化代码速度
lto = "fat" # 启用最大程度的链接时优化
codegen-units = 1 # 降低代码生成单元数,增加优化时间但提升性能
panic = "abort" # 使用 'abort' 而不是 'unwind' 来处理 panic

兼顾大小和速度
toml 代码解读复制代码[profile.release]
opt-level = "s" # 优化代码尺寸,兼顾速度
lto = "fat" # 启用最大程度的链接时优化
codegen-units = 1 # 降低代码生成单元数,增加优化时间但提升性能
panic = "abort" # 使用 'abort' 而不是 'unwind' 来处理 panic
strip = "symbols" # 移除符号信息,保留必要的调试信息

配置什么意思呢?来看解释

  1. opt-level

说明:指定编译器优化的级别。

取值:

0:不优化,编译速度最快。
1:优化编译速度。
2:平衡优化速度和运行时性能(默认)。
3:最大优化运行时性能。
"s":优化代码尺寸。
"z":进一步优化代码尺寸,比 "s" 更激进。

选择理由:为了生成更小的可执行文件,选择 "z";为了生成最快的可执行文件,选择 3。

  1. lto

说明:启用链接时优化(Link Time Optimization)。

取值:

false:不启用 LTO(默认)。
true:启用 LTO。
"thin":启用 Thin LTO。
"fat":启用最大程度的 LTO。

选择理由:启用 LTO 可以减少二进制文件的大小并提高运行时性能。"thin" 比较适中,而 "fat" 则是最大程度的优化,虽然会增加编译时间,但可以带来更好的性能。

  1. codegen-units

说明:控制代码生成单元的数量。
取值:默认值通常是 16,设为 1 可以最大化优化。
选择理由:减少代码生成单元的数量,可以使编译器有更多的信息来进行全局优化,从而生成更小和更快的可执行文件。设为 1 可以最大化优化,但会增加编译时间。

  1. panic

说明:控制 panic 时的行为。

取值:

"unwind":展开栈(默认)。
"abort":直接中止。

选择理由:使用 "abort" 可以减少可执行文件的大小,并提高某些情况下的性能,因为不需要保留展开栈的信息。

  1. strip

说明:控制移除的调试信息和符号。

取值:

"none":不移除任何信息(默认)。
"debuginfo":移除调试信息。
"symbols":移除符号表,但保留必要的信息用于调试。
"all":移除所有可选的信息,包括调试信息和符号表。

选择理由:移除不必要的调试信息和符号表可以显著减少可执行文件的大小。

标签: none