按主流的實現(xiàn)單進(jìn)程應(yīng)該是go java pypy,因為pypy有GIL,不能充分利用多核性能。但其實這個問題沒有太大意義,因為這個跟HTTP server的實現(xiàn)密切相關(guān),完整的框架有更多功能,空跑的性能也會低一些。Go的handler很高效,也很輕,額外的功能很少,所以很快;但如果你實現(xiàn)一個完全不解析HTTP協(xié)議、連接進(jìn)來就直接發(fā)送HTTP 200 OK的“HTTP服務(wù)器”,那可能會更快,但拿來比顯然不合適。Java的主流Web實現(xiàn)本身就是比較完整的東西了,有前端,協(xié)議解析,線程池,任務(wù)管理之類的,大約相當(dāng)于Python的WSGI,如果是Servelet比WSGI的話,那應(yīng)該還是Java要快不少。
創(chuàng)新互聯(lián)建站自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元吉縣做網(wǎng)站,已為上家服務(wù),為吉縣各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
我感覺還是python+c比較好。
就我身邊的人來看,得出如下觀點:
c++:學(xué)一樣可以解決任何問題,就是學(xué)習(xí)的成本太高,時間腦力不夠?qū)W不好啊。。。
python+c:拿來一個項目,先用python做個試用版(不考慮執(zhí)行效率、內(nèi)存等),開發(fā)速度是其他語言開發(fā)時間的十倍,然后測試,發(fā)現(xiàn)執(zhí)行中出現(xiàn)瓶頸的話,要不就多開幾個進(jìn)程,要不就用c語言寫小的功能,再用python調(diào)用,幾乎可以又快又好的解決任何問題。(要提高速度試試pypy)
go:一直有人強調(diào)go對多線程多cpu執(zhí)行時的效率有多塊多好,那是因為他和python比,python根本不支持多線程(因為GIL的存在),go各方面都很平庸(比效率比不過c,比庫的支持比不過python(python也可以用c庫?。?,只是和python瘸腿的一方面比當(dāng)然強了。。。
c#、java之類:轉(zhuǎn)別人的話說,用起來感覺像開著一輛裝滿石頭的拖拉機。。。
總的感覺:天才去學(xué)c++,能解決任何問題,又賺大錢;我這種不聰明的人python+c就能解決幾乎所有問題了。。。
我用python執(zhí)行時間23秒,用pypy執(zhí)行時間1.54秒,用numba加速為1.5秒,c語言在本機macos上執(zhí)行時間1.3秒,java運行速度1.45秒(jre8),詳細(xì)見圖片,可見引入jit編譯后,性能直逼c語言,而寫python比寫c容易太多,比java簡潔,寫代碼速度也是非常非常重要。由于歷史原因,很多python庫用的c語言庫,如pandas(pandas的矩陣計算用numpy優(yōu)化過非???,可能比手寫c語言循環(huán)還要快),可以通過設(shè)計來分離c語言加速后的python代碼和pure python,分別用不同的加速方法,如numba可以單獨加速一個函數(shù),把需要大量計算的放在一個函數(shù)用numba加速(numbapro支持顯卡加速但是商業(yè)版的)。
所以只適當(dāng)設(shè)計一下,python在一般計算問題下有這些解決方案下性能不是問題,實在不行,你還可以用boost::python來寫個c/c++調(diào)用庫來解決性能問題。
下面的測試說明,對于性能,原生python比較慢,在windows下python比linux,macos要快,用pypy后相當(dāng)于java,c#速度,pypy,c#在windows下受益msvc表現(xiàn)較快,,go語言速度表現(xiàn)比較穩(wěn)定,c語言理論上是最快,但受環(huán)境和編譯器影響較大。對c#,java可能在GC垃圾回收時會表現(xiàn)不穩(wěn)定,因為在oop中有大量計算后可能要回收垃圾內(nèi)存對象,這個沒有用到oop,只是純計算,理論上還是c/c++語言最快。
python和java比,運行速度比java慢,java強大于改進(jìn)n次的強大jre,但python在很多領(lǐng)域能調(diào)用很多現(xiàn)成的開源庫,在數(shù)據(jù)分析中有優(yōu)勢,pyhton的代碼比java要簡潔,容易入門和使用。在優(yōu)化的計算庫幫助下,如numpy numba,pandas,scikit-learn,python的實際問題運算性能并不低于java。java主要是框架太多,相對復(fù)雜,java主要用于業(yè)務(wù)程序開發(fā),符合軟件工程理論,可伸縮性強,強類型有利于對程序的靜態(tài)檢查分析。java隨著安卓,hadoop,spark的興起,加入java語言的公司很多,性能也可以通過優(yōu)化解決很多問題。很多服務(wù)器如ubuntu server,centos都默認(rèn)支持python,而java虛擬機需要安裝配置,python的安裝使用也相對簡單。python的庫有開箱即用感,很多業(yè)務(wù)領(lǐng)域,你可能還在用oop寫代碼,考慮設(shè)計模式,用鋤頭挖溝時,而python調(diào)用挖掘機api已經(jīng)炒菜完工開飯了,缺點是油耗比較大。