Re: [心得] 結合Python 與 C(C++) 的優點
※ 引述《KSJ (阿真)》之銘言:
: 裡面有二個函式 目的一樣 但一個用C++ 一個用Python:
: def usePython(i):
: from time import time
: start=time()
: for j in range(100000000):
: i+=1
: end=time()
: return end-start
: def useC(i):
: from time import time
: start=time()
: import spam #這是spam.pyd 動態函式庫(不知道有沒有講錯)
: i=spam.useC(i) #這是spam.pyd裡 定義的函式
: end=time()
: return end-start
: 同樣是在Python Shell底下測試(因為Python比較易用(對我來說))
: 得到的時間比約為 至少 500倍 (快50秒 : 不到0.1秒)
: 所以當程式計算量大的時候 計算部份交給C算是不錯的選擇
我不知道你 C function 是如何實作出你形容的功能,我想應該只是一個簡單的 for
loop 利用 counter 來計數,每個 iteration increment 一個 int 變數 by 1。
如果是這樣的話,這個比較其實是不太對等。
在Python 3.0 以前,range 不是產生 iterator,range(100000000) 這個
expression 所作的事是配置至少 100000000 個 4 bytes(for 100000000 個 int
object),並且分別填入 0 ~ 100000000-1,並且配置 4 * 100000000bytes(for
list object本身),這跟 C function 做的事差太多了。
可否麻煩你試著把 usePython 改成:
def usePython(i):
from time import time
start = time()
for j in xrange(100000000):
i += 1
return time()-start, i
或:
def usePython(i):
from time import time
start = time()
j = 0
while j < 100000000:
i += 1
j += 1
return time()-start, i
再比較一下跟 C implementation 的差異約是多少。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.128.6
推
04/14 00:56, , 1F
04/14 00:56, 1F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章