Rust 和 C 排序算法性能對比

“C++ 和 Java 的發展速度比 C 語言更快,但我敢肯定,C 語言仍然會長期存在。”

Dennis Ritchie, C 語言之父

C 和 Rust 的速度比較

方法

比較這兩種語言速度的方法是,通過實現常用的排序算法,並在不同的元素範圍運行,比較哪種語言在排序時耗時最長。我們使用的排序算法包括:

  1. Bubble Sort(冒泡排序)

  2. Insertion Sort(插入排序)

  3. Selection Sort(選擇排序)

  4. Shell Sort(希爾排序)

  5. Heap Sort(堆排序)

圖:時間複雜度

以上是常見的排序算法的時間複雜度,通過觀察最壞情況下的複雜度,我們可以大致知道哪種排序技術會在它們之間表現最差。

冒泡排序 Bubble sort 最壞情況複雜度爲 O(N²),與其他排序算法相比,可能會出現表現最差的情況。我們將要生成的結果還將輸出比較元素排序所需的時間,來幫助我們瞭解最壞情況下的時間複雜度。

所以,我已經用 C 和 Rust 編寫了以上 5 種算法。對於輸入,我使用一個整數數組,並使用 C 語言中的隨機數生成器函數 rand() 和 Rust 中的 rand::Rng 在數組中填充隨機數。這個數組被作爲排序算法的輸入,輸出記錄在一個矩陣中。測試三個範圍 1000,10000 & 100000 個元素的算法性能。

我們設置運行了 100 次迭代,並取平均值來生成輸出結果。

性能測試的設置

完成並運行上述設置的系統配置是:

macOS Catalina

MacBook Pro(16 英寸,2019 年版本)

處理器: 2.3 GHz 8 核英特爾酷睿 i9

內存: 16 GB 2667 MHz DDR4

clang 版本 12.0.0 (優化 flag -O3)

rustc 1.45.2 (優化 flag -release)

性能統計

以下是生成的輸出:

C 語言在不同排序算法上的表現

Rust 在不同排序算法上的表現

從輸出結果中可以非常清楚地看到,大部分結果是非常接近。對於每種排序算法和數組範圍,在某些情況下 Rust 表現更好,而在某些情況下 C 表現更好。在較小的元素範圍(1000 元素)中,除了插入排序之外,Rust 表現更好一些。對於 10000 元素的範圍,C 語言在每種排序算法下都表現得更好。

條形圖也展示了所有情況下的運行結果,速度幾乎相同。

你也可以嘗試在自己的系統上去驗證。

項目代碼 Github :https://github.com/imrushabh/C_vs_Rust

結論

要得出哪種語言更快的結論是相當困難的,因爲它取決於具體情況。但我們可以認爲 Rust 在速度上是 C 語言的競爭對手,它比許多其他流行的語言如 Java 和 Python 速度更快。Rust 提供了很多功能,比如它注重速度、內存安全和並行,而且它也是開源的,我們可以使用 Rust 開發廣泛的新軟件應用,比如遊戲引擎、操作系統、文件系統、瀏覽器組件和虛擬現實的模擬引擎。在未來的時間裏,我們肯定會到處看到 Rust 的身影!!!

英文原文:

https://levelup.gitconnected.com/which-is-faster-rust-or-c-lets-find-out-who-is-the-usain-bolt-87495c774c8

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/zKcC5fFEQg4vKObE0VU_6Q