卓越性能代码_编程语言性能实测,Go比Python更胜一筹?
作者 | Pawel Dziuba?ka, Sebastian Karasiewicz
譯者 | 泓技
出品 | AI科技大本營(yíng)(ID:rgznai100)
互聯(lián)網(wǎng)上有非常多的精彩代碼,它們成了構(gòu)建各種基礎(chǔ)設(shè)施的基礎(chǔ)。你正在閱讀的這個(gè)平臺(tái)同樣也在致力于創(chuàng)建出色的代碼。盡管普通用戶一般不會(huì)注意到這一點(diǎn),但另一方面,優(yōu)秀的開(kāi)發(fā)人員始終在尋求使他們的應(yīng)用程序(以及他們的代碼)有更好的方法。
編寫出色代碼的基礎(chǔ)取決于開(kāi)發(fā)人員的技能及其選擇的語(yǔ)言。這不可避免地導(dǎo)致開(kāi)發(fā)人員之間的沖突,而沖突不僅關(guān)乎技能水平,而且主要關(guān)乎他們偏愛(ài)的語(yǔ)言(甚至有可能發(fā)生史詩(shī)般沖突)。當(dāng)你將兩種出色的編程語(yǔ)言(例如Golang(Go)和Python)放在一起時(shí),最有可能出現(xiàn)這種情況。
現(xiàn)在讓我們退后一步,消除個(gè)人偏見(jiàn)和偏好,單純地從優(yōu)點(diǎn)和功能的角度評(píng)估這兩種語(yǔ)言,熟練地平整好比賽場(chǎng)地。現(xiàn)在,我們剩下的只有兩個(gè)不錯(cuò)的選擇:Go vs Python。現(xiàn)在的問(wèn)題變成,哪個(gè)編程語(yǔ)言更適合你?
Python的故事
如果去詢問(wèn)一些開(kāi)發(fā)人員,你會(huì)聽(tīng)到Python誕生之前的都不值一提,而Python之后的也都不值一提之類的話。多年來(lái),由于它是一種非常好的編程語(yǔ)言,已成功贏得了龐大關(guān)注。互聯(lián)網(wǎng)上充滿了使用Python創(chuàng)建的酷炫應(yīng)用。
就編程年限而言,Python算是元老。它于1991年首次被概念化。隨著年齡的增長(zhǎng),逐漸具備了一定的優(yōu)勢(shì)。它擁有廣泛的支持者,這意味著它是穩(wěn)定的,并且文檔豐富。在大多數(shù)情況下,你會(huì)找到幾乎所有內(nèi)容的庫(kù)以及幾乎所有可以想到的任何代碼示例。對(duì)于開(kāi)發(fā)人員和企業(yè)而言,這意味著使用Python的選擇會(huì)帶來(lái)豐富的經(jīng)驗(yàn)和編碼。
有很多使用Python作為基礎(chǔ)的開(kāi)源項(xiàng)目,因此在大多數(shù)情況下,你不是從頭開(kāi)始的。它很好地集成到企業(yè)應(yīng)用程序中,并且可以在機(jī)器語(yǔ)言和AI應(yīng)用程序中使用。但是它確實(shí)有缺點(diǎn),一方面,它對(duì)于內(nèi)存密集型任務(wù)不是理想的選擇,對(duì)于執(zhí)行而言有點(diǎn)慢,另一方面,它不適合移動(dòng)應(yīng)用程序開(kāi)發(fā)。
說(shuō)到Golang(Go)
Google于2009年開(kāi)發(fā)了Go語(yǔ)言。Go的初衷是解決實(shí)際問(wèn)題。它的目標(biāo)是創(chuàng)建一種語(yǔ)言,以消除C++等語(yǔ)言中發(fā)現(xiàn)的所有負(fù)擔(dān)和多余的東西,這給它帶來(lái)了性能和速度上的提升。另外,大多數(shù)第一次接觸Go的開(kāi)發(fā)人員不會(huì)體會(huì)到語(yǔ)法的高門檻,因?yàn)镚o里面熟悉的元素和易用性會(huì)令人驚喜。
這并不是說(shuō)該語(yǔ)言在所有情況下都是完美的。盡管將速度和優(yōu)雅提升到了一個(gè)新的高度,但它確實(shí)留下了一些需要改進(jìn)的地方。首先,它沒(méi)有擴(kuò)展庫(kù),也不支持繼承。此外,沒(méi)有GUI庫(kù)或面向?qū)ο蟮木幊讨С帧K龅木褪莿?chuàng)建一個(gè)輕量級(jí)線程(Goroutines),智能標(biāo)準(zhǔn)庫(kù),強(qiáng)大的內(nèi)置安全性,并且易于使用最少的語(yǔ)法進(jìn)行編碼。
性能測(cè)試
我們可以無(wú)休止地談?wù)揋olang或Python的優(yōu)缺點(diǎn),但是當(dāng)我們考慮部署使用時(shí),我們都期待它們能有卓越性能。因此,我們?cè)贗ntel?Core?i7–9700KCPU @ 3.60GHz × 8核的測(cè)試設(shè)備上進(jìn)行了一些測(cè)試。測(cè)試代碼可以從這里獲得https://github.com/sekarasiewicz/go-python-benchmark。
1.二分搜索
我們創(chuàng)建了一個(gè)整數(shù)列表(從1到100000),然后使用二分搜索查找始終相同的數(shù)字729。結(jié)果是:
2.冒泡排序
再次,我們生成了一個(gè)整數(shù)列表(這次是隨機(jī)的,共10000個(gè)元素),并使用冒泡排序算法對(duì)其進(jìn)行了排序。
3.文件讀取
讀取“ lorem ipsum”文本文件的簡(jiǎn)單測(cè)試。
4. HTTP請(qǐng)求處理
編寫HTTP服務(wù)器確實(shí)很容易,但是我們?yōu)樵赑ython中進(jìn)行有效的模擬付出了很多努力。我們檢查了一個(gè)簡(jiǎn)單的“hello world!” 信息需要多長(zhǎng)時(shí)間響應(yīng)。
選Golang還是Python?
盡管Python一直是社區(qū)中的最愛(ài),在2019年第一季度就成為GitHub上最快的編程語(yǔ)言排行榜上(按拉取請(qǐng)求數(shù)計(jì)算+17%)的第二名,但Golang并沒(méi)有落后很多,位于緊隨其后的第四位(+ 8%)。Golang與Python之間的選擇變得更加模糊。無(wú)論如何,在選擇哪一項(xiàng)適合你時(shí)都需要考慮一些事項(xiàng)。
1.可擴(kuò)展性:Golang在創(chuàng)建時(shí)就考慮了可擴(kuò)展性。它具有內(nèi)置的并發(fā)性,可以同時(shí)處理多個(gè)任務(wù)。Python同樣可以使用并發(fā),但不是內(nèi)置的。它通過(guò)線程實(shí)現(xiàn)并行性。這意味著,如果你要處理大型數(shù)據(jù)集,那么Golang似乎是一個(gè)更合適的選擇。
2. 性能:眾所周知,Python不是內(nèi)存或CPU友好型的編程語(yǔ)言,但由于它擁有大量的庫(kù),Python可以有效執(zhí)行基本的開(kāi)發(fā)任務(wù)。Golang具有內(nèi)置功能,它更適合于微服務(wù)軟件體系結(jié)構(gòu)。
3. 應(yīng)用程序:Python非常適合編寫用于人工智能、數(shù)據(jù)分析、深度學(xué)習(xí)和Web開(kāi)發(fā)的代碼。Golang已普遍用于系統(tǒng)編程,并且受到云計(jì)算和集群計(jì)算應(yīng)用程序的開(kāi)發(fā)人員的喜愛(ài)。
4. 社區(qū)和庫(kù):如前所述,Python的時(shí)代賦予了它一定的優(yōu)勢(shì)。其中之一是它擁有的庫(kù)數(shù)量以及支持它的大型社區(qū)。另一方面,Golang雖然沒(méi)有Python提供的大量庫(kù)和社區(qū)支持,但仍是一種增長(zhǎng)中的語(yǔ)言。我們不應(yīng)該將Golang踢出局。它的增長(zhǎng)和采用率令人難以置信,并且每天都在增長(zhǎng)。
5. 執(zhí)行性能:如果只關(guān)注速度,那么Golang肯定會(huì)贏。
考慮所有這些因素后,你的用例將成為采用哪種語(yǔ)言的決定因素。在你要建立開(kāi)發(fā)團(tuán)隊(duì)來(lái)創(chuàng)建微服務(wù)的情況下,Golang將是更合理的選擇,因?yàn)樗瓤焖?#xff0c;易于編碼,又可以很好地?cái)U(kuò)展。另一方面,Python更適合于AI、ML和數(shù)據(jù)分析。
因此,一對(duì)一地比較,在大多數(shù)情況下,Go會(huì)脫穎而出,被認(rèn)為是使用Python的有效替代方案。開(kāi)發(fā)人員需要選擇一種編程語(yǔ)言,要考慮其開(kāi)發(fā)項(xiàng)目的性質(zhì)和規(guī)模以及所涉及人員的技能。
好消息是,無(wú)論選擇哪種語(yǔ)言,兩種語(yǔ)言都在不斷發(fā)展。盡管在大多數(shù)情況下,Golang似乎是一個(gè)顯而易見(jiàn)的選擇,但Python社區(qū)不會(huì)閑坐而不采取任何行動(dòng)。兩種語(yǔ)言都在擴(kuò)展和增長(zhǎng)。這意味著將來(lái)我們將看到更多的功能和改進(jìn)。
原文鏈接:https://www.softkraft.co/golang-vs-python/(*本文由AI科技大本營(yíng)編譯,轉(zhuǎn)載請(qǐng)聯(lián)系微信1092722531)
總結(jié)
以上是生活随笔為你收集整理的卓越性能代码_编程语言性能实测,Go比Python更胜一筹?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dcdc模块降额设计_模块电源应用设计的
- 下一篇: python入门之控制结构-循环结构_P