在Cython代码中,最简单和最快的取模运算(5 % 2
)方法是什么?似乎使用%
会使代码变慢,那么有更好的方法来做这个操作吗?
cython.cdivision
。请注意,处理负数模数的语义将有所不同。我在任何地方都使用%运算符,而且我认为它不会减慢代码。实际上,%非常快!你是否使用cdef声明变量?也许你只是因此添加了太多的Python开销。
divmod
函数,它只需要两个参数,并返回它们的商和余数的元组。>>> 10 % 7
3
>>> divmod(10,7)
(1, 3)
>>> -7 % 3
2
>>> divmod(-7,3)
(-3, 2)
divmod
没有被Cython优化,所以它会变成Python函数调用。这些函数调用非常昂贵。 - Fred Foo
@cython.cdivision(True)
。 - Ted Petrou