我終於得到了cython的工作感謝這裏的一些人在stackoverflow,但現在有一個問題。從我不使用cdef到使用cdef時,速度確實沒有增加。不要誤解我的錯誤,當我使用cython編譯python代碼時,速度有了非常明顯的提高,但是當我使用cdef時卻沒有這樣做。Cython cdef沒有速度增加
這是已減緩程序的其餘部分的代碼區:
def tupdate(self,surf):
cdef int x
cdef int y
for x in xrange(self.w):
for y in xrange(self.h):
if self.map[(x,y)].y <= 600 and self.map[(x,y)].y >= -50: self.map[(x,y)].FLAG = 1
else: self.map[(x,y)].FLAG = 0
self.map[(x,y)].y += self.speed
if self.map[(x,y)].FLAG:
self.map[(x,y)].rect = ((self.map[(x,y)].x,self.map[(x,y)].y),(50,25))
self.map[(x,y)].update()
self.map[(x,y)].render(surf)
此代碼應該被越來越稱爲60次,但由於代碼的速度,我的舊硬件每秒鐘只能調用30次,我認爲使用cdef來處理x和y等強烈使用的變量會有所幫助。但是在cdef之前和之後fps是一樣的。
我對Windows 7的64位以32位的蟒蛇2.7
我現在只是自己學習cython,但我的第一印象是,你可能會使用一些未優化的調用。只需輸入x和y在這裏可能不夠用。 – jdi 2012-07-31 05:22:54
'x'和'y'不是被激烈使用的那些...... – 2012-07-31 05:23:02
那麼哪些得到intenesly使用? x和y是循環的指數? – 2012-07-31 05:23:55