官术网_书友最值得收藏!

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也會最小化它們的運行時開銷。

主站蜘蛛池模板: 台南县| 九江市| 鄯善县| 凤城市| 福泉市| 吐鲁番市| 枣强县| 车致| 久治县| 绥阳县| 镇远县| 来宾市| 夹江县| 福安市| 山阴县| 中西区| 天全县| 竹山县| 建湖县| 南皮县| 莱州市| 营口市| 电白县| 三江| 万盛区| 安泽县| 金门县| 苍溪县| 静海县| 济阳县| 洛隆县| 休宁县| 望谟县| 麻江县| 融水| 社旗县| 翁源县| 简阳市| 江永县| 巴楚县| 三江|