1

Stackoverflowに参加している何人かの人々のおかげで、ようやくcythonが機能するようになりましたが、今は問題があります。cdefを使用しない場合からcdefを使用する場合まで、実際には速度の向上はありません。誤解しないでください。cythonを使用してPythonコードをコンパイルすると、非常に顕著な速度の向上が見られましたが、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)

このコードは1秒間に60回呼び出されるはずですが、コードの速度と古いハードウェアは1秒間に約30回しか呼び出されないため、xやyなどの頻繁に使用される変数にcdefを使用すると役立つと考えました。ただし、fpsはcdefの前後で同じです。

私は32ビットのPython2.7を使用してWindows764ビットを使用しています

4

1 に答える 1

5

同じインデックスを使用して、コード内でself.map 11回インデックスを作成します。一度インデックスを作成し、参照をローカル名にコピーしてから、その名前を使用します。

于 2012-07-31T05:24:50.150 に答える