Rust 和 C 排序算法性能對比
“C++ 和 Java 的發展速度比 C 語言更快,但我敢肯定,C 語言仍然會長期存在。”
Dennis Ritchie, C 語言之父
C 和 Rust 的速度比較
方法
比較這兩種語言速度的方法是,通過實現常用的排序算法,並在不同的元素範圍運行,比較哪種語言在排序時耗時最長。我們使用的排序算法包括:
-
Bubble Sort(冒泡排序)
-
Insertion Sort(插入排序)
-
Selection Sort(選擇排序)
-
Shell Sort(希爾排序)
-
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