 Rust 程序设计语言 简体中文版 1.85.0访问堆上的数据比访问栈上的数据慢,因为必须通过指针来访问。现代处理器在内存 中跳转越少就越快。继续类比,假设有一个服务员在餐厅里处理多个桌子的点菜。在 一个桌子报完所有菜后再移动到下一个桌子是最有效率的。从桌子 A 听一个菜,接着 桌子 B 听一个菜,然后再桌子 A,然后再桌子 B 这样的流程会更加缓慢。出于同样原 68/562Rust 程序设计语言 简体中文版 因,处理器在处理的数据彼此较 泛型代码的性能 你可能会好奇使用泛型类型参数是否会有运行时消耗。好消息是泛型并不会使程序比具体类型 运行得慢。 Rust 通过在编译时进行泛型代码的单态化(monomorphization)来保证效率。单态化是一个 通过填充编译时使用的具体类型,将通用代码转换为特定代码的过程。 在这个过程中,编译器所做的工作正好与示例 10-5 中我们创建泛型函数的步骤相反。编译器 寻找所有泛型代码被调用的位置并使用泛型代码针对具体类型生成代码。 Option_f64::Some(5.0); } 泛型 Option Rust 程序设计语言 简体中文版 1.85.0访问堆上的数据比访问栈上的数据慢,因为必须通过指针来访问。现代处理器在内存 中跳转越少就越快。继续类比,假设有一个服务员在餐厅里处理多个桌子的点菜。在 一个桌子报完所有菜后再移动到下一个桌子是最有效率的。从桌子 A 听一个菜,接着 桌子 B 听一个菜,然后再桌子 A,然后再桌子 B 这样的流程会更加缓慢。出于同样原 68/562Rust 程序设计语言 简体中文版 因,处理器在处理的数据彼此较 泛型代码的性能 你可能会好奇使用泛型类型参数是否会有运行时消耗。好消息是泛型并不会使程序比具体类型 运行得慢。 Rust 通过在编译时进行泛型代码的单态化(monomorphization)来保证效率。单态化是一个 通过填充编译时使用的具体类型,将通用代码转换为特定代码的过程。 在这个过程中,编译器所做的工作正好与示例 10-5 中我们创建泛型函数的步骤相反。编译器 寻找所有泛型代码被调用的位置并使用泛型代码针对具体类型生成代码。 Option_f64::Some(5.0); } 泛型 Option- 被编译器替换为了具体的定义。因为 Rust 会将每种情况下的泛型代码编译为 具体类型,使用泛型没有运行时开销。当代码运行时,它的执行效率就跟好像手写每个具体定 义的重复代码一样。这个单态化过程正是 Rust 泛型在运行时极其高效的原因。 198/562Rust 程序设计语言 简体中文版 Trait:定义共同行为 trait 定 0 码力 | 562 页 | 3.23 MB | 25 天前3
共 1 条
- 1













