程式語言性能實測,Go 比 Python 更勝一籌?

2021-02-13 CSDN

作者 | Pawel Dziubałka, Sebastian Karasiewicz出品 | AI科技大本營(ID:rgznai100)網際網路上有非常多的精彩代碼,它們成了構建各種基礎設施的基礎。你正在閱讀的這個平臺同樣也在致力於創建出色的代碼。儘管普通用戶一般不會注意到這一點,但另一方面,優秀的開發人員始終在尋求使他們的應用程式(以及他們的代碼)有更好的方法。編寫出色代碼的基礎取決於開發人員的技能及其選擇的語言。這不可避免地導致開發人員之間的衝突,而衝突不僅關乎技能水平,而且主要關乎他們偏愛的語言(甚至有可能發生史詩般衝突)。當你將兩種出色的程式語言(例如Golang(Go)和Python)放在一起時,最有可能出現這種情況。現在讓我們退後一步,消除個人偏見和偏好,單純地從優點和功能的角度評估這兩種語言,熟練地平整好比賽場地。現在,我們剩下的只有兩個不錯的選擇:Go vs Python。現在的問題變成,哪個程式語言更適合你?

如果去詢問一些開發人員,你會聽到Python誕生之前的都不值一提,而Python之後的也都不值一提之類的話。多年來,由於它是一種非常好的程式語言,已成功贏得了龐大關注。網際網路上充滿了使用Python創建的酷炫應用。就編程年限而言,Python算是元老。它於1991年首次被概念化。隨著年齡的增長,逐漸具備了一定的優勢。它擁有廣泛的支持者,這意味著它是穩定的,並且文檔豐富。在大多數情況下,你會找到幾乎所有內容的庫以及幾乎所有可以想到的任何代碼示例。對於開發人員和企業而言,這意味著使用Python的選擇會帶來豐富的經驗和編碼。有很多使用Python作為基礎的開源項目,因此在大多數情況下,你不是從頭開始的。它很好地集成到企業應用程式中,並且可以在機器語言和AI應用程式中使用。但是它確實有缺點,一方面,它對於內存密集型任務不是理想的選擇,對於執行而言有點慢,另一方面,它不適合行動應用程式開發。

Google於2009年開發了Go語言。Go的初衷是解決實際問題。它的目標是創建一種語言,以消除C++等語言中發現的所有負擔和多餘的東西,這給它帶來了性能和速度上的提升。另外,大多數第一次接觸Go的開發人員不會體會到語法的高門檻,因為Go裡面熟悉的元素和易用性會令人驚喜。這並不是說該語言在所有情況下都是完美的。儘管將速度和優雅提升到了一個新的高度,但它確實留下了一些需要改進的地方。首先,它沒有擴展庫,也不支持繼承。此外,沒有GUI庫或面向對象的編程支持。它要做的就是創建一個輕量級線程(Goroutines),智能標準庫,強大的內置安全性,並且易於使用最少的語法進行編碼。

我們可以無休止地談論Golang或Python的優缺點,但是當我們考慮部署使用時,我們都期待它們能有卓越性能。因此,我們在Intel®Core™i7–9700KCPU @ 3.60GHz × 8核的測試設備上進行了一些測試。測試代碼可以從這裡獲得https://github.com/sekarasiewicz/go-python-benchmark。我們創建了一個整數列表(從1到100000),然後使用二分搜索查找始終相同的數字729。結果是:

 

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

讀取「 lorem ipsum」文本文件的簡單測試。

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

儘管Python一直是社區中的最愛,在2019年第一季度就成為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社區不會閒坐而不採取任何行動。兩種語言都在擴展和增長。這意味著將來我們將看到更多的功能和改進。

https://www.softkraft.co/golang-vs-python/

相關焦點

  • 2021年程式設計師後端程式語言排名終於出來了,看看你用的語言排第幾
    ,那麼問題來了,那麼多程式語言,python還會一直獨佔鰲頭嗎,你們覺得哪個程式語言會越來越流行。有人說每10個程式設計師中就有5個是python程式設計師,即使不是幹的python行業,也或多或少的學習和使用過python這門語言,因為python可以爬取數據,並且現在人工智慧,機器學習那麼火爆,又可以做數據挖掘,還可以做前端,所以python的勢頭依然強勁。
  • Go語言無孔不入的2016:躋身主流程式語言、國內大熱、極速提升、尖端應用……
    時隔一年,回頭再看,Go已躋身主流程式語言行列。在國內,Go的熱度更是不凡。2016,對於Go來說,又是怎樣的一年? Go語言已經7歲了!今年8月,Go 1.7如期發布。撰寫本稿時,Go 1.8的測試版也出來了。我們正在熱切盼望著明年2月的Go 1.8正式版。
  • 用Go語言編程的利與弊
    如果你有個名為 thing.go 的文件,請在另一個名為 thing_test.go 的文件中編寫測試,並運行「go test」。Go 就將快速執行這些測試。Go 語言的靜態分析工具眾多且強大。一種特別的工具是 gofmt,它根據 Go 的建議風格對代碼進行格式化。這可以規範項目的許多意見,讓團隊獎經理集中在代碼所做的工作上。
  • 2021年程式語言趨勢預測:Python和JavaScript仍火熱,Go不可小覷
    程式語言及框架似乎總是被人拿來比較,這裡我們只談語言。作為開發人員,在當今這個技術更迭飛快的時代要連年吃香並非易事,很多十年開發經驗以上的開發人員不知道經歷了多少語言的變化,今年還在用C語言,下一年就是D了。「PHP是世界上最好的程式語言」已被人忘卻,但「青春飯」和35歲「金龍躍魚門」的傳說確真實發生。
  • 為什麼我最喜歡的程式語言是 Go
    (點擊上方藍字,快速關注我們)編譯:伯樂在線/tsteho如有好文章投稿,請點擊 → 這裡了解詳情我力圖尊重每個人的喜好,因此我通常會避開相關爭論:哪種程式語言大型網站性能的調查結果證明這種行為被大量用戶認可。Go 編譯器的作者滿足了我對低延遲的期望:編譯速度對他們來講很重要,並且新的優化需要仔細地衡量是否會降低編譯速度。我有一個之前沒有用過 Go 的朋友。在使用 go get 命令安裝了 RobustIRC 橋之後,他得出結論,Go 一定是一種解釋性語言,我不得不糾正他:不,Go 編譯器本來就這麼快。
  • 用Go語言進行編程的利與弊
    Go 語言是一門非常快速的程式語言。因為 Go 語言是編譯成機器碼的,因此,它的表現自然會優於那些解釋性或具有虛擬運行時的程式語言。Go 程序的編譯速度也非常快,並且生成的二進位文件非常小。我們的 API 在短短幾秒鐘內就編譯完畢,生成的可執行文件區區只有 11.5MB 這麼小。與其他語言相比,Go 語言的語法很簡單,很容易掌握。
  • 計算機程式語言 | Python 語言淺析
    它常被暱稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕鬆地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D遊戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。
  • 會玩Go!會玩Python!嘭!Go-Python!
    PPAP大叔Golang是靜態語言,性能很好,當它不那麼靈活,不好在運行時動態運行代碼。Python是動態語言,非常靈活,但是性能很差。古人云:「魚和熊掌不能兼得」。但是如今有了Go-Python,魚和熊掌也可以兼得。
  • 頂級程式語言之對比:Rust VS Go
    現如今新程式語言層出不窮,從如此多的程式語言中選擇一款最適合的變得相當困難。因此,我們在本文中將討論兩種最受開發者歡迎的程式語言:Rust和Go語言。除了介紹這語言外,還會比較兩種語言之優缺點。 根據數據和研究,發現大約74.5%的開發人員喜歡和點讚Rust程式語言,從面世以來,使用Rust程式語言的項目越來越多。在2019年, Rust程式語言的使用量較前一年增長了 23%。
  • 再見Python!我要學Go了!2500字深度分析!
    程式語言的天下,自古就是適者生存。像是Java, C和Python等語言,都是歷經大浪淘沙,順應時代發展的強大的程式語言。而今天要和大家分享的go語言,也是順應時代發展的強大程式語言,被稱為取代Python的語言。
  • Go編程模式:切片,接口,時間和性能
    在本篇文章中,我會對 Go 語言編程模式的一些基本技術和要點,這樣可以讓你更容易掌握 Go 語言編程。其中,主要包括,數組切片的一些小坑,還有接口編程,以及時間和程序運行性能相關的話題。在 Go 語言中,使用「成員函數」的方式叫「Receiver」,這種方式是一種封裝,因為 PrintPerson()本來就是和 Person強耦合的,所以,理應放在一起。更重要的是,這種方式可以進行接口編程,對於接口編程來說,也就是一種抽象,主要是用在「多態」,這個技術,在《Go 語言簡介(上):接口與多態[10]》中已經講過。在這裡,我想講另一個 Go 語言接口的編程模式。
  • Python究竟是一門什麼樣的程式語言?
    這點類似於dos,當然比dos強大的多,您可以直接編程並執行。這樣的好處是顯而易見的,比如在嵌入式編程中,之前為了提高速度一般採用C/C++模式的編譯語言,在某些情景下,通過提示人機互通重新加載腳本會更靈活。Python是一門面向對象的語言。這意味著Python對類、繼承、封裝的支持非常好。Python非常易於學習。關鍵字非常少、語法結構簡單。
  • 再見,Python!你好,Go語言
    調查結果顯示,2019 年,程式設計師最想學習的程式語言 Top 3 分別是 Go、Kotlin 和 Python,其中 Go 以 37.2% 的比例排在首位。但 Go 要想撼動編程界的常青樹 Java 二十多年的地位無疑難度頗大。
  • 一個go和python有趣的例子
    今天在一博文中看到一個有趣的問題,分享給大家,曾經也通過自學學習過python程式語言,python是一門很簡煉、功能豐富的語言,目前已大量用於科學研究和網際網路開發各個領域
  • 為什麼 Python 不是未來的程式語言?
    鑑於 Stack Overflow 的規模,因此它是程式語言受歡迎程度的一個很好的指標。Stack Overflow 上各種程式語言的標籤快照。儘管 R 語言在過去幾年裡一直處於停滯不前的狀態,而且許多其他程式語言也在穩步下降,但 Python 的增長似乎勢不可擋。
  • 如何在 Go 中嵌入 Python | Linux 中國
    解釋器本身是用 C 編寫的,並且提供了一個 C API 以編程方式來執行底層操作,例如創建對象、導入模塊和調用函數。在本文中,我們將展示一些代碼示例,我們將會在與 Python 交互的同時繼續保持 Go 代碼的慣用語,但在我們繼續之前,我們需要解決一個間隙:嵌入 API 是 C 語言,但我們的主要應用程式是 Go,這怎麼可能工作?
  • 「Go 僅是 Google 的程式語言,而不是程式設計師的!」
    的確,我們有一個Go的社區在為Go語言做貢獻,其中有些還是很重要且很有價值的功能,你只需看看貢獻者列表(https://github.com/golang/go/blob/master/CONTRIBUTORS)中的多樣性,或者看看各種各樣的人提交的PR(https://github.com/golang/go/commits/master)就能明白這一點。
  • Q新聞丨谷歌或將 Swift 程式語言納入安卓平臺;Go語言編程模式經驗;GitHub DGit改進平臺可靠性、性能以及可用性
    Google 或許會將 Swift 程式語言納入 Android 平臺自從去年年末備受矚目的 Swift 開源後,消息不斷,最近網際網路巨頭們-Google、Facebook、Uber 齊聚倫敦,共同就 Swift 相關問題展開了討論。
  • Python程式語言主要應用領域介紹
    Python在系統編程領域的作用:Python語言在作業系統服務的內置接口,被稱為Shell 工具。Python程序可以搜索文件和目錄樹、可以運行其他的應有程序或是用進程或線程進行並行處理... Python標準庫綁定了POSIX 以及其他常規作業系統工具。
  • 知乎從Python轉為Go,是不是代表Go比Python好?
    「由 Python 語言轉向 Go 語言就說明 Go 語言比 Python 語言好」完全是一種片面理解。「語言至上論」是解決不了業務問題的,選 Go 也不行,Java 也不行。Go 的優勢是文件易部署,協程機制相對成熟且簡單,以及靜態編譯語言的效率,還有就是編程模式相對簡單。