了解Cython“typedness”报告

时间:2014-02-20 09:14:05

标签: python casting report cython

我正在使用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位。

以下是我的代码报告:

enter image description here

黄色是否意味着有效或无效的代码?越黄越多......什么?

另一个问题是,我可以点击编号的行并打开以下报告(例如第23行):

enter image description here

这是什么意思?附:如果你看不到足够好的图像 - >右键单击 - >查看图像(在Windows 7上);)

Thnx任何帮助=)

更新

如果有人想在这里尝试我的玩具代码,他们是:

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 个答案:

答案 0 :(得分:2)

这或多或少是你写的。更确切地说:

淡黄色线信号Cython命令,它不是直接转换为纯C代码,而是通过调用CPython API来完成工作。这些行包括:

  • Python对象分配
  • 调用Python函数和builtins
  • 在Python高级数据结构上运行(例如:list,tuples,dictionary)
  • 在Python类型上使用重载操作(例如:+,*在Python整数与C int中)

无论如何,这表明事情可能会得到改善。

答案 1 :(得分:1)

我想我也许已经得到了它。如果我错了,有人可以纠正我:

这条线越“黄”,那么效率就越低

最有效的线条是白色线条,因为它们被翻译成纯C代码。