作為go語言的狂熱粉絲最近聽說了同樣鼎鼎大名的現代化語言-rust,看了介紹後,發現rust絕對是一門非常有潛力的系統級語言,因此特抽出業餘時間進行了學習。
在網上有不少關於go和rust的對比文章,但是從我個人的觀點來看,這兩個語言沒有什麼好對比的,因為它們的使用場景基本沒有重疊之處。go適合網路程式設計、軟實時系統; rust適合記憶體使用苛刻、無gc、超高效能的場景,因此這兩門語言如果結合起來,完全是一對非常美好的cp,大家覺得呢?
當然,光說不幹空把式,這裡先來乙個多執行緒下簡單計算的對比。
環境簡介:
macbook pro
4核8執行緒
16g記憶體
任務描述:
啟動8個執行緒
每個執行緒執行500萬次計算任務
統計耗時
gopackage main import ( "fmt" "math/rand" // "runtime" "sync" "time" ) func main() for i := 0; i < 8; i++ else } fmt.println(x) wg.done() }() } wg.wait() fmt.println("time used: ", time.now().sub(st)) }
結果:1298498081 1427131847 2019727887 939984059 336122540 1474941318 911902081 140954425 time used: 12.93551ms
rust
extern crate time; extern crate rand; use std::thread; use time::*; use rand::rng; fn main() else } x }) }) .collect(); for h in handles ", h.join().map_err(|_| "could not join a thread!").unwrap()); } let end = time::now(); let duration = end - start; println!("耗時:{}", duration); }
結果:thread finished with count=1845603826 thread finished with count=496088980 thread finished with count=-1380406629 thread finished with count=-360370413 thread finished with count=355179270 thread finished with count=119012173 thread finished with count=-229585086 thread finished with count=-736809061 耗時:pt0.011544s
結論這裡能夠看出,在使用8個執行緒進行簡單計算時,rust的效能是稍高於於go的,11.5ms vs 12.9ms,並沒有太大優勢。因此如果不考慮gc、記憶體控制、泛型等因素,go必然是第一選擇,因為go的學習曲線比rust平緩太多了,開發效率也更高,何況go的非同步網路io也是如此的優秀,這方面rust還有待提高~
補充1當執行緒數進一步增加時,例如10,rust和go的對比來到了14ms vs 19ms;如果是15個執行緒,那就是15ms vs 24ms;20個執行緒,19ms vs 37ms;30個執行緒,26ms vs 50ms。
因此可以看出,如果是實時計算系統,那rust的吞吐量對於go還是有一定優勢的,基於執行緒和goroutine的排程模式還是有差別的。
補充2
Arch 使用 i3 美化桌面
作為程式設計師,每天面對電腦螢幕,乙個舒服高效的桌面的桌面環境是必不可少的。前陣子用了gnome,後來聽聞i3的大名,就馬上入了坑。因為我想讓啟動環境更加簡潔,所以通過命令列而不是gdm 來啟動。解除安裝gdm pacman rsc gdm使用i3 gaps代替i3 wm 可以設定視窗間隙 yaou...
i3 視窗管理器使 Linux 更美好
我使用 linux 已經很長時間了,但我從來沒有對可選用的桌面環境完全滿意過。直到去年,xfce 還是我認為在功能和效能之間的平和最接近滿意的乙個桌面環境。然後我發現了 i3,這是乙個改變了我的生活的驚人的軟體。i3 是乙個平鋪視窗管理器。視窗管理器的目標是控制視窗系統中視窗的外觀和位置。視窗管理器...
Q8400與i3跟i5的差異
i7 i5 i3有什麼區別 i3是intel準備替換core2 e7400及以下產品的系列,整合顯示核心,整合記憶體控制器,整合pcie 16控制器,1156針插槽,主要對應h55,h57晶元組,不支援睿頻技術,支援ht超執行緒技術 2c4t 32nm核心 i5是intel準備替換core2 e75...