1.7 Rust的主要特点
我们相信,能够创建出哪些东西来取决于我们使用什么工具。Rust让你能构建出自己想要的软件,同时又不必因为过于担心而不敢去尝试。那么,Rust是什么样的工具呢?从1.6节的3条原则中可以看出,Rust语言有如下3个主要特点。
● 高性能。
● 支持并发。
● 内存使用效率高。
1.7.1 性能
Rust为你提供了计算机可用的全部性能。很有名的一点就是,Rust提供的内存安全性是不依靠垃圾回收器的。
不幸的是,向你承诺实现更快的程序时,存在一个问题:CPU的速度是固定的。因此,要让软件运行得更快,就要让软件做更少的事情。然而,Rust语言的规模很大,为了解决这个矛盾,Rust将重担交给了编译器。
Rust社区倾向于采用规模更大的语言,由编译器去承担更多的工作,而不是采用更简单的语言,由编译器去承担更少的工作。Rust编译器会积极地优化程序的大小和速度。Rust也有一些不太明显的技巧,如下所示。
● 默认情况下,提供缓存友好的数据结构。在Rust程序中,通常用数组来保存数据,而不是由指针创建的深层嵌套的树结构。这也叫作面向数据编程。
● 有现代化的包管理器可用(cargo),这使得要从数以万计的开源软件包中获益这件事变得很轻松。C和C++在这方面的平滑度要低得多,构建具有众多依赖关系的大型项目往往非常困难。
● 除非显式地请求动态分发,否则总是采用静态分发的。这使得编译器可以极大地优化代码,有时甚至可以完全消除函数调用的开销。
1.7.2 并发
对软件工程师来说,要让一台计算机同时做多件事情,无疑是非常困难的。从操作系统角度来看,如果程序员犯了一个严重错误,两个独立运行的线程就可能随意地相互破坏。然而,Rust催生了无畏并发的说法。它对安全性的强调跨越了独立线程的界限,而且也没有全局解释器锁(GIL)来限制线程的速度。在本书的第二部分中,我们将探讨其中的一些含义。
1.7.3 内存使用效率
Rust让你创建出的程序具有最小的内存使用量。在需要的时候,你可以使用固定大小的数据结构,并且能够明确地知道你的程序是如何管理每个字节的。在使用诸如迭代和泛型类型等高级的语言构造时,Rust也会最小化它们的运行时开销。