2014-02-20 43 views
0

我正在使用Cython使我的 Python代碼更高效。我已閱讀了關於Cython的函數cython -a filename.pyx以查看我的cython代碼的「typedness」。這是Cython網頁上的簡短reference。我的環境是Windows 7,Eclipse PyDev,Python 2.7.5 32位,Cython 0.20.1 32位,MinGW 32位。瞭解Cython「typedness」報告

這裏是我的代碼報告:

enter image description here

如此做黃色平均效率或無效率的代碼?更多的黃色是更多....什麼?

另一個問題,我可以點擊編號行和下面的報表打開(如第23行):

enter image description here

這是什麼意思?附:如果你無法看到圖像不夠好 - >右鍵 - >查看圖像(在Windows 7);)

日Thnx的任何援助=)

UPDATE:

在萬一有人想在這裏試試我的玩具代碼,他們是:

hello.pyx

import time 

cdef char say_hello_to(char name): 
    print("Hello %s!" % name) 

cdef double f(double x) except? -2: 
    return x**2-x 

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

cpdef p(): 
    s = 0 
    for i in range(0, 1000000): 
     c = time.time() 
     integrate_f(0,100,5) 
     s += time.time()- c 
    print s 

test_cython.py

import hello as hel 

hel.p() 

setup.py

from distutils.core import setup 
from Cython.Build import cythonize 

setup(
    name = 'Hello world app', 
    ext_modules = cythonize("hello.pyx"), 
) 

從命令行提示我使用的命令(以產生C,PYD等文件):

python setup.py install build --compiler=mingw32 

要生成我使用的報告:

cython -a hello.pyx 

回答

2

這或多或少是你寫的。更確切地說:

黃色線條信號Cython命令不直接轉換爲純C代碼,但通過調用CPython API來完成這項工作。那些線包括:

  • Python對象分配
  • 調用Python函數和建宏
  • 關於Python高電平數據鋼結構製品操作(例如:列表中,元組,字典)
  • 使用Python的超負荷動作的類型(例如:+,* Python整數vs C int)

無論如何,這是一個很好的跡象表明事情可能會得到改善。

+0

+1謝謝你的幫助=) – jjepsuomi

1

我想我可能已經得到了它。有人可以糾正我,如果我錯了:

越「淺黃色」線路,則效率較低是

最有效的線是白色的線,因爲這些被翻譯成純C -碼。