Cython中的模运算
在Cython代码中,做取模运算(比如5 % 2
)最简单和最快的方法是什么?看起来使用%
这个符号会让代码变得很慢,那有没有更好的方法来实现这个呢?
3 个回答
-2
你能不能用内置的 divmod
函数呢?这个函数需要两个参数,它会返回一个包含商和余数的元组。
>>> 10 % 7
3
>>> divmod(10,7)
(1, 3)
>>> -7 % 3
2
>>> divmod(-7,3)
(-3, 2)
-1
我到处都在用%这个符号,我觉得它并不会让代码变慢。实际上,%的速度真的很快!你是不是用cdef来声明你的变量?也许正是因为这个,你的代码增加了太多Python的开销。
8
根据 这个链接,你可以使用编译指令 cython.cdivision
。需要注意的是,处理负数的取模运算时,结果会有不同的表现。