cython中融合类型的替代品
Alternatives of fused type in cython
我正在努力将最初使用 python-C api 用 C api 编写的 python 模块重写为 Cython.The 模块也使用 NumPy。该项目的一个主要挑战是保持模块的当前速度,并且它应该适用于所有 Numpy 数据类型。我正在考虑使用融合数据类型使其通用,但我担心它会对性能产生瓶颈影响。是否有任何其他技术可以用来代替融合类型,我可以使用它来实现速度和通用代码。
忽略 ali_m 关于您是否实际测量了性能问题的完全有效的评论...
http://docs.cython.org/src/userguide/fusedtypes.html#selecting-specializations
"For a cdef or cpdef function called from Cython this means that the specialization is figured out at compile time. For def functions the arguments are typechecked at runtime, and a best-effort approach is performed to figure out which specialization is needed."
从本质上讲,如果您从 Cython 调用,应该没有问题 - 生成和使用单独的函数没有开销。如果您从 Python 呼叫它,显然必须停下来考虑呼叫哪一个。
但是在担心之前衡量一下你的表现! (并阅读手册,它非常清楚地回答了您的问题。)
我正在努力将最初使用 python-C api 用 C api 编写的 python 模块重写为 Cython.The 模块也使用 NumPy。该项目的一个主要挑战是保持模块的当前速度,并且它应该适用于所有 Numpy 数据类型。我正在考虑使用融合数据类型使其通用,但我担心它会对性能产生瓶颈影响。是否有任何其他技术可以用来代替融合类型,我可以使用它来实现速度和通用代码。
忽略 ali_m 关于您是否实际测量了性能问题的完全有效的评论...
http://docs.cython.org/src/userguide/fusedtypes.html#selecting-specializations
"For a cdef or cpdef function called from Cython this means that the specialization is figured out at compile time. For def functions the arguments are typechecked at runtime, and a best-effort approach is performed to figure out which specialization is needed."
从本质上讲,如果您从 Cython 调用,应该没有问题 - 生成和使用单独的函数没有开销。如果您从 Python 呼叫它,显然必须停下来考虑呼叫哪一个。
但是在担心之前衡量一下你的表现! (并阅读手册,它非常清楚地回答了您的问题。)