Rust初體驗,它確實有點快

Rust初體驗

寫了多年的Java,某天機緣巧合之下聽說了一門語言叫Rust,Rust的親爹是Mozila,如果要和其它語言拼爹的話,實力應該還是可以的。

官方介紹如下:

Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages.
Rust速度快得驚人,內存效率也很高。沒有運行時或垃圾收集器,它可以為性能關鍵的服務提供強大支持,可以在嵌入式設備上運行,并且很容易與其他語言集成。

Rust’s rich type system and ownership model guarantee memory-safety and thread-safety — enabling you to eliminate many classes of bugs at compile-time.
Rust豐富的類型系統和所有權模型保證了內存安全性和線程安全性——使您能夠在編譯時消除許多各種各樣的bug。

Rust has great documentation, a friendly compiler with useful error messages, and top-notch tooling — an integrated package manager and build tool, smart multi-editor support with auto-completion and type inspections, an auto-formatter, and more.
Rust的文檔很強大,有一個友好的編譯器,能提示一些有用的錯誤信息,以及一流的工具——一個集成的包管理器和構建工具,支持自動完成和類型檢查的智能多項編輯器,一個自動格式化程序,等等。

我已經在上文中把今天的重點加粗標識了。打算用一個LeetCode上的算法題目來對比下Java實現和Rust實現,看看Rust是不是真的很驚人。

題目如下:
給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。

歡迎留言討論。微信/知乎可搜索碼神手記同名賬號,分享關注,共同進步。

示例1:

輸入: [2,2,1]
輸出: 1

示例2

輸入: [4,1,2,1,2]
輸出: 4

解法:利用異或運算(XOR)的特性,使用位操作進行計算。
先來一起復習下XOR的特性:

  1. 對0和任意數進行XOR運算,得到的仍然是這個數本身,即a^0=a。
  2. 對同一個數進行XOR運算,返回的結果是0。即a^a=0。
  3. XOR滿足交換律和結合律。即aba=(aa)b=0^b=b。

以下是擼代碼環節......

Java版本:

class Solution {
    public int singleNumber(int[] nums) {
        int result = 0;
        for (int num : nums) {
            result = result ^ num;
        }
        return result;
    }
}

Rust版本:

impl Solution {
    pub fn single_number(nums: Vec<i32>) -> i32 {
        let mut result: i32 = 0;
        for num in nums {
            result = result ^ num;
        }
        return result;
        }
}

執行結果整理到一個表格中,便于直觀地對比:

語言 執行用時 內存消耗
Java 1ms 40.9MB
Rust 0ms 2.1MB

從數據來看,Rust在執行用時和內存消耗上比Java強大太多。這個例子中內存消耗的差距更明顯一些。

結語

如果不談Java和Rust背后的生態,僅從運行效率本身來看。Rust作為一門更接近底層的語言,性能比Java強也是應該的。在內存要求苛刻、GC時間苛刻的場景下不失為一個好的選擇,例如嵌入式、實時股票行情場景。能不能取代C++就看Mozila怎么搞好社區和生態圈了,以及C++程序員們是否愿意付出學習成本。

我也是剛接觸Rust,之后也會持續關注,希望Rust未來可期。朋友們有興趣的話可以多多交流,共同拓寬技術廣度與深度。

歡迎留言討論。微信/知乎可搜索碼神手記同名賬號,分享關注,共同進步。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374