cython中融合类型的替代方案

时间:2015-03-25 13:08:11

标签: python numpy scipy cython python-c-api

我正在使用python-C api重写一个最初用C编写的python模块到Cython。该模块也使用NumPy。该项目的一个主要挑战是保持模块的当前速度,并且它应该适用于所有Numpy数据类型。我想使用融合数据类型使其通用但我担心,因为它对性能的瓶颈影响。有没有其他技术可以用来代替融合类型,我可以使用它来实现速度和通用代码。

1 个答案:

答案 0 :(得分:8)

忽略ali_m关于您是否真正衡量过您的效果问题的完全有效评论......

http://docs.cython.org/src/userguide/fusedtypes.html#selecting-specializations

"对于从Cython调用的cdef或cpdef函数,这意味着在编译时计算出特化。对于def函数,在运行时对参数进行类型检查,并执行尽力而为的方法来确定需要哪种特化。"

基本上,如果您从Cython调用应该没有问题 - 生成并使用单独的函数而没有开销。如果您从Python调用它,显然必须停下来思考要调用哪一个。

但是在担心它之前测量你的表现! (并阅读手册,它非常清楚地回答了你的问题。)