rust编译后大小
A. 2020-12-24 (一)Rust 入坑安装、修改国内源、使用musl、优化二进制文件等
为以往项目开发 http api ,准备使用rust开发尝个鲜,看是否有应用到其他项目中的可能性,本系列内容均为一步一步入坑的实况,未来有时间可能整理的更为系统性,目前仅作记录。
由于需要支持各个发行版 linux,目前的想法是采用 musl 平台编译100%静态链接的可执行文件,尽量单文件发布。
文件为静态链接,未优化,包含调试信息,未经 strip,大小 3687136
优化配置完全参考 https://www.aloxaf.com/2018/09/rece_rust_size/ 此文章,在此表示感谢。
文件为静态链接,包含调试信息,未经 strip,大小 1731352
文件为静态链接,不包含调试信息,stripped,大小 292264
Rust 安装、验证完毕。
B. 减少rust编译后程序体积
第一步:
编译release版本
第二步:
strip 命令
扩展
整优化等级
通过修改默认优化等级方式减少体积,以cpu换空间,如果不是必要,建议不要改
在Cargo.toml中新增下面配置
开启 LTO
减少体积,增加链接时间也是一个取舍问题
在Cargo.toml中新增下面配置
C. rust中usize怎么变成isize
这种做法就产生了,编译器会发出警告,如果你声明了一个变量却没有使用它:将警告作为错误处理。
这是为了避免有些人开启严格编译模式。尽管没有逻辑问题,但是你“使用”了。
(void)u
纯粹无意义的语句。
所以就出现了这种用法,那么久出问题了,但是就是编译不过了因为一些编译问题
在很多编译器里面,编译器就不会警告了
D. rust设置文件大小上限
168kb。rust设置文件具有自己的上限,上限为168kb,Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。
E. rust性能到底有多好
这个和c++大同小异。 因为把大量的运行时放到了编译时。 只不过编译器优化不够还达不到c++性能。
其实rust和c++的关系很想scala和java的关系。 rust和c++很多概念甚至库都是通用的,抽象化方式,比如泛性,多态,可变性,拷贝构造,移动构造,都是一样的。 你要是写过c++再来写rust,就会吐槽原来这个功能也有啊...
运行速度上rust c++ java都是大同小异,io处理上 java甚至比rust还要快。内存消耗rust和c++是一个级别的,都非常低。 另外很多人写rust喜欢用arc cellref这些只能指针, 其实是给这些变量增加了动态性会导致额外开销,所以这些特性用多了后,rust性能也不会太高:
F. go和rust打包软件大小
0.86MB。go和rust打包软件大小是0.86MB,go和rust的软件包是属于整套的软件包,需要将go和rust软件包在windows的原文件里进行协同式解压,只有经过协同式解压之后才能进行安装使用。
G. 对比 Go 语言,Rust 有什么优势和劣势
我并没有什么编程的经验,觉得编程实在是太复杂了,不喜欢去研究太多,对这个也不怎么懂,只能说自己是个半吊子,就是所掌握的知识,也是东拼西凑的,朋友和我说点儿,自己去书上看一点儿,只能说根据自己的体验给出一些体会吧。

其实我觉得什么代码啊编程啊这些东西还是比较适合理工的学生去研究,我一看脑袋就大,完全不明白在讲什么。我大概了解的就是这些,语言的话大家可以多方面的去了解,也不是说有缺点就是不好,看配置看个人吧,每个人习惯不一样,也许有的人用不稳定的还觉得挺好呢,有的人就喜欢比较完美的,在我看来编程这个东西真的是很复杂,会有很多的代码,这些代码弄得我自己头都大了,有的时候还得去恶补一下。
