我正在努力使用 python-C api 将最初用 C 编写的 python 模块重写为 Cython。该模块还使用 NumPy。该项目的一个主要挑战是保持模块当前的速度,并且它应该适用于所有 Numpy 数据类型。我正在考虑使用融合数据类型使其通用,但我担心它对性能的瓶颈影响。是否有任何其他技术可以用来代替融合类型,我可以用它来实现速度和通用代码。
忽略 ali_m 关于您是否真正测量了性能问题的完全有效的评论......
http://docs.cython.org/src/userguide/fusedtypes.html#selecting-specializations http://docs.cython.org/src/userguide/fusedtypes.html#selecting-specializations
“对于从 Cython 调用的 cdef 或 cpdef 函数,这意味着专门化是在编译时确定的。对于 def 函数,参数在运行时进行类型检查,并执行尽力而为的方法来确定需要哪种专门化。”
本质上,如果您从 Cython 调用,应该没有问题 - 生成和使用单独的函数没有开销。如果您从 Python 调用,它显然必须停下来考虑调用哪一个。
但在担心之前先衡量一下你的表现! (并阅读手册,它非常清楚地回答了您的问题。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)