Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

IT行業裏面,很多門外漢應該也都知道,就是運行速度最快的是C,運行很慢的是Python。其實這都不是事,Python運行慢,但是代碼量非常少。幾十行代碼就能做到C幾百行才能做到的東西。當然小編這裏並沒有瞧不起C,C乃是語言中的祖母,只是相對來講打個比方,今天這個小夥子厲害了,他居然運行Python和C一樣快,直接驚呆了!咱們接下來看下!

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵


這裏還是要推薦下小編的Python學習羣:483546416,不管你是小白還是大牛,小編我都歡迎,不定期分享乾貨,包括小編自己整理的一份2017最新的Python資料和0基礎入門教程,歡迎初學和進階中的小夥伴。在不忙的時間我會給大家解惑。

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵


如何使用Cython

下面的代碼來自Cython文檔:

def f(x): return x**2-xdef integrate_f(a, b, N): s = 0 dx = (b-a)/N for i in range(N): s += f(a+i*dx) return s * dx

這是一個例子,一個不完整的函數的實現。作爲純Python代碼,速度很慢,因爲Python必須在機器本機數字類型和其內部對象類型之間來回轉換。

現在考慮相同代碼的Cython版本,並強調Cython的增加:

cdef double f(double x): return x**2-xdef integrate_f(double a, double b, int N): cdef int i cdef double s, x, dx s = 0 dx = (b-a)/N for i in range(N): s += f(a+i*dx) return s * dx

如果我們顯式聲明變量類型,無論是函數參數還是函數體(double,int等)中使用的變量,Cython都會將所有這些轉換成C語言。我們也可以使用cdef關鍵字來定義 儘管這些函數只能被其他的Cython函數調用,而不能被Python腳本調用,但是這些函數主要是用C實現的。

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

Python運行速度居然追上了C語言?那麼Python太完美了!簡直無敵

Cython分析和性能

可以通過分析代碼並親眼目睹瓶頸在哪裏獲得最佳性能。Cython爲Python的cProfile模塊提供鉤子,因此可以使用Python自己的分析工具來查看Cython代碼的執行情況。無需在工具組之間切換;可以繼續所熟悉和喜愛的Python世界中工作。

它有助於記住所有情況下,Cython不是魔術,仍然適用明智的現實世界的表現實踐。在Python和Cython之間來回穿梭越少,你的應用運行得越快。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章