4.1.10 单态化与二进制体积
10-单态化与二进制体积 — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
原文链接: https://google.github.io/comprehensive-rust/idiomatic/polymorphism/refresher/monomorphization.html
4.1.10 单态化与二进制体积
| |
带泛型的函数或类型的每一个实例,都会在编译期变成该函数的唯一、具体版本。运行时不存在泛型,只有具体类型。
这带来很强的基线性能与优化空间,代价则是二进制体积与编译时间。
缩减二进制体积与编译时间的办法很多,这里不展开。
按需付费:单态化带来的体积增长,只发生在最终程序或动态库中实际用到的类型或该类型上的函数实例。
何时需要关心:单态化影响编译时间与二进制体积。在浏览器 WebAssembly 或嵌入式开发等场景中,设计时可能需要留意泛型的使用。