- Rust實戰(zhàn)
- (新西蘭)蒂姆·麥克納馬拉
- 833字
- 2022-12-01 19:12:22
1.7 Rust的主要特點
我們相信,能夠創(chuàng)建出哪些東西來取決于我們使用什么工具。Rust讓你能構(gòu)建出自己想要的軟件,同時又不必因為過于擔心而不敢去嘗試。那么,Rust是什么樣的工具呢?從1.6節(jié)的3條原則中可以看出,Rust語言有如下3個主要特點。
● 高性能。
● 支持并發(fā)。
● 內(nèi)存使用效率高。
1.7.1 性能
Rust為你提供了計算機可用的全部性能。很有名的一點就是,Rust提供的內(nèi)存安全性是不依靠垃圾回收器的。
不幸的是,向你承諾實現(xiàn)更快的程序時,存在一個問題:CPU的速度是固定的。因此,要讓軟件運行得更快,就要讓軟件做更少的事情。然而,Rust語言的規(guī)模很大,為了解決這個矛盾,Rust將重擔交給了編譯器。
Rust社區(qū)傾向于采用規(guī)模更大的語言,由編譯器去承擔更多的工作,而不是采用更簡單的語言,由編譯器去承擔更少的工作。Rust編譯器會積極地優(yōu)化程序的大小和速度。Rust也有一些不太明顯的技巧,如下所示。
● 默認情況下,提供緩存友好的數(shù)據(jù)結(jié)構(gòu)。在Rust程序中,通常用數(shù)組來保存數(shù)據(jù),而不是由指針創(chuàng)建的深層嵌套的樹結(jié)構(gòu)。這也叫作面向數(shù)據(jù)編程。
● 有現(xiàn)代化的包管理器可用(cargo),這使得要從數(shù)以萬計的開源軟件包中獲益這件事變得很輕松。C和C++在這方面的平滑度要低得多,構(gòu)建具有眾多依賴關(guān)系的大型項目往往非常困難。
● 除非顯式地請求動態(tài)分發(fā),否則總是采用靜態(tài)分發(fā)的。這使得編譯器可以極大地優(yōu)化代碼,有時甚至可以完全消除函數(shù)調(diào)用的開銷。
1.7.2 并發(fā)
對軟件工程師來說,要讓一臺計算機同時做多件事情,無疑是非常困難的。從操作系統(tǒng)角度來看,如果程序員犯了一個嚴重錯誤,兩個獨立運行的線程就可能隨意地相互破壞。然而,Rust催生了無畏并發(fā)的說法。它對安全性的強調(diào)跨越了獨立線程的界限,而且也沒有全局解釋器鎖(GIL)來限制線程的速度。在本書的第二部分中,我們將探討其中的一些含義。
1.7.3 內(nèi)存使用效率
Rust讓你創(chuàng)建出的程序具有最小的內(nèi)存使用量。在需要的時候,你可以使用固定大小的數(shù)據(jù)結(jié)構(gòu),并且能夠明確地知道你的程序是如何管理每個字節(jié)的。在使用諸如迭代和泛型類型等高級的語言構(gòu)造時,Rust也會最小化它們的運行時開銷。
- Learn ECMAScript(Second Edition)
- Learning Java Functional Programming
- Vue.js設(shè)計與實現(xiàn)
- Objective-C Memory Management Essentials
- Java系統(tǒng)分析與架構(gòu)設(shè)計
- C和C++安全編碼(原書第2版)
- 實用防銹油配方與制備200例
- 數(shù)據(jù)結(jié)構(gòu)(C語言)
- Python數(shù)據(jù)分析從0到1
- 劍指MySQL:架構(gòu)、調(diào)優(yōu)與運維
- Windows Phone 7.5:Building Location-aware Applications
- 從零開始學C語言
- 區(qū)塊鏈技術(shù)與應(yīng)用
- iPhone應(yīng)用開發(fā)從入門到精通
- 大話Java:程序設(shè)計從入門到精通