这个c程序编译后,特别短小
cat hello.c
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
gcc -o hello hello.c
ls -al hello
-rwxr-xr-x 1 debian debian 15952 Oct 29 10:06 hello
wc -l hello
1 hello
来个rust的:
cat hello.rs
fn main() {
println!("Hello, world!");
}
rustc hello.rs
ls -al hello
-rwxr-xr-x 1 debian debian 3832688 Oct 29 09:59 hello
wc -l hello
13339 hello
这下不得了,体积膨胀了240倍(3832688/15952),rust太搞笑了吧?
你这个比较法好可笑,看你的
Cargo.toml
,大概内容有意味着你编译时应该使用
cargo build --release
在不同的环境,不同的优化等级下,体积差距非常大,大概有几个方式可参考
1.调整优化等级
opt-level
2.开启
LTO
3.调整并行代码生成单元数量
4.
Panic
时立刻终止5.最小化依赖
6.去除不必要的依赖
命令
cargo deps | dot -Tpng > dep.png
,可以将当前依赖关系绘制成一张图。(需要用到cargo-deps
和graphviz
)7.禁用不必要的 feature
其余
libstd 优化
、移除 panic 相关字符串
、UPX 压缩
等各种手段优化到极致后再来说话