Cython方法重载与类型转换技术问题咨询
问题2:编写通用类型转换函数
完全可以,建议写成inline的cdef函数,避免Python层调用开销,同时让Cython在编译时直接内联优化:
cimport cython import numpy as np cimport numpy as np ctypedef fused factor_type: int long long double # 编译时确定类型的转换函数 @cython.inline cdef np.dtype _get_np_dtype(factor_type): if factor_type is int: return np.intc elif factor_type is double: return np.double elif factor_type is cython.longlong: return np.longlong else: raise TypeError("不支持的factor类型")
注意:不要用def定义转换函数,否则会引入额外的Python类型检查和调用开销;@cython.inline会让Cython把函数内容直接插入到调用位置,进一步提升性能。
内容的提问来源于stack exchange,提问作者LeonM
相关产品推荐
相关产品推荐

