程式語言效能實測,Go 和 Python誰更牛?

2021-10-03 15:01:10 字數 2905 閱讀 6172

網際網路上有非常多的精彩**,它們成了構建各種基礎設施的基礎。你正在閱讀的這個平台同樣也在致力於建立出色的**。儘管普通使用者一般不會注意到這一點,但另一方面,優秀的開發人員始終在尋求使他們的應用程式(以及他們的**)有更好的方法。

編寫出色**的基礎取決於開發人員的技能及其選擇的語言。這不可避免地導致開發人員之間的衝突,而衝突不僅關乎技能水平,而且主要關乎他們偏愛的語言(甚至有可能發生史詩般衝突)。當你將兩種出色的程式語言(例如golang(go)和python)放在一起時,最有可能出現這種情況。

現在讓我們退後一步,消除個人偏見和偏好,單純地從優點和功能的角度評估這兩種語言,熟練地平整好比賽場地。現在,我們剩下的只有兩個不錯的選擇:go vs python。現在的問題變成,哪個程式語言更適合你?

如果去詢問一些開發人員,你會聽到python誕生之前的都不值一提,而python之後的也都不值一提之類的話。多年來,由於它是一種非常好的程式語言,已成功贏得了龐大關注。網際網路上充滿了使用python建立的酷炫應用。

就程式設計年限而言,python算是元老。它於2023年首次被概念化。隨著年齡的增長,逐漸具備了一定的優勢。它擁有廣泛的支持者,這意味著它是穩定的,並且文件豐富。在大多數情況下,你會找到幾乎所有內容的庫以及幾乎所有可以想到的任何**示例。對於開發人員和企業而言,這意味著使用python的選擇會帶來豐富的經驗和編碼。

有很多使用python作為基礎的開源專案,因此在大多數情況下,你不是從頭開始的。它很好地整合到企業應用程式中,並且可以在機器語言和ai應用程式中使用。但是它確實有缺點,一方面,它對於記憶體密集型任務不是理想的選擇,對於執行而言有點慢,另一方面,它不適合移動應用程式開發。

google於2023年開發了go語言。go的初衷是解決實際問題。它的目標是建立一種語言,以消除c++等語言中發現的所有負擔和多餘的東西,這給它帶來了效能和速度上的提公升。另外,大多數第一次接觸go的開發人員不會體會到語法的高門檻,因為go裡面熟悉的元素和易用性會令人驚喜。

這並不是說該語言在所有情況下都是完美的。儘管將速度和優雅提公升到了乙個新的高度,但它確實留下了一些需要改進的地方。首先,它沒有擴充套件庫,也不支援繼承。此外,沒有gui庫或物件導向的程式設計支援。它要做的就是建立乙個輕量級執行緒(goroutines),智慧型標準庫,強大的內建安全性,並且易於使用最少的語法進行編碼。

我們可以無休止地談論golang或python的優缺點,但是當我們考慮部署使用時,我們都期待它們能有卓越效能。因此,我們在intel®core™i7–9700kcpu @ 3.60ghz × 8核的測試裝置上進行了一些測試。測試**可以從這裡獲得

1.二分搜尋

我們建立了乙個整數列表(從1到100000),然後使用二分搜尋查詢始終相同的數字729。結果是:

2.氣泡排序

再次,我們生成了乙個整數列表(這次是隨機的,共10000個元素),並使用氣泡排序演算法對其進行了排序。

3.檔案讀取

讀取「 lorem ipsum」文字檔案的簡單測試。

http請求處理

編寫http伺服器確實很容易,但是我們為在python中進行有效的模擬付出了很多努力。我們檢查了乙個簡單的「hello world!」 資訊需要多長時間響應。

儘管python一直是社群中的最愛,在2023年第一季度就成為github上最快的程式語言排行榜上(按拉取請求數計算+17%)的第二名,但golang並沒有落後很多,位於緊隨其後的第四位(+ 8%)。golang與python之間的選擇變得更加模糊。無論如何,在選擇哪一項適合你時都需要考慮一些事項。

1.可擴充套件性:golang在建立時就考慮了可擴充套件性。它具有內建的併發性,可以同時處理多個任務。python同樣可以使用併發,但不是內建的。它通過執行緒實現並行性。這意味著,如果你要處理大型資料集,那麼golang似乎是乙個更合適的選擇。

2. 效能:眾所周知,python不是記憶體或cpu友好型的程式語言,但由於它擁有大量的庫,python可以有效執行基本的開發任務。golang具有內建功能,它更適合於微服務軟體體系結構。

3. 應用程式:python非常適合編寫用於人工智慧、資料分析、深度學習和web開發的**。golang已普遍用於系統程式設計,並且受到雲計算和集群計算應用程式的開發人員的喜愛。

4. 社群和庫:如前所述,python的時代賦予了它一定的優勢。其中之一是它擁有的庫數量以及支援它的大型社群。另一方面,golang雖然沒有python提供的大量庫和社群支援,但仍是一種增長中的語言。我們不應該將golang踢出局。它的增長和採用率令人難以置信,並且每天都在增長。

5. 執行效能:如果只關注速度,那麼golang肯定會贏。

考慮所有這些因素後,你的用例將成為採用哪種語言的決定因素。在你要建立開發團隊來建立微服務的情況下,golang將是更合理的選擇,因為它既快速,易於編碼,又可以很好地擴充套件。另一方面,python更適合於ai、ml和資料分析。

因此,一對一地比較,在大多數情況下,go會脫穎而出,被認為是使用python的有效替代方案。開發人員需要選擇一種程式語言,要考慮其開發專案的性質和規模以及所涉及人員的技能。

好訊息是,無論選擇哪種語言,兩種語言都在不斷發展。儘管在大多數情況下,golang似乎是乙個顯而易見的選擇,但python社群不會閒坐而不採取任何行動。兩種語言都在擴充套件和增長。這意味著將來我們將看到更多的功能和改進。

Go語言效能優化 For Range 效能研究

如果我們要遍歷某個陣列,map集合,slice切片等,go語言 golang 為我們提供了比較好用的for range方式。range是乙個關鍵字,表示範圍,和for配合使用可以迭代陣列,map等集合。它的用法簡潔,而且map channel等也都是用for range的方式,所以在編碼中我們使用f...

從Baa開發中總結Go語言效能漸進優化

在go生態已經有很多web框架,但感覺沒有乙個符合我們的想法,我們想要乙個簡潔高效的核心框架,提供路由,context,中介軟體和依賴注入,而且拒絕使用正則和反射,於是我們開始構建baa框架。一開始使用最簡單的通俗寫法實現了第一版的功能,基本可用,但是效能爛到爆,優化之路漫漫開啟。最好的文章應該是每...

Go 語言高效能程式設計

第一章 效能分析 第二章 常用資料結構 第三章 併發程式設計 第四章 編譯優化 附錄 go 語言陷阱 go 語言筆試面試題 我使用 go 作為主力程式語言已經有一年多的時間了,主要的工作職責是開發一些效率工具,例如分布式編譯加速工具。對效能不太敏感的地方,通常會使用 python,因為 python...