По модулю в Cython - PullRequest
       6

По модулю в Cython

4 голосов
/ 22 ноября 2011

Какой самый простой и быстрый способ выполнить операцию по модулю (5 % 2) в коде Cython? Кажется, что использование % сильно замедляет код, так что есть ли лучший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 22 ноября 2011

В соответствии с https://github.com/cython/cython/wiki/enhancements-division, используйте директиву компилятора cython.cdivision.Обратите внимание, что для обработки модуля отрицательных чисел будет использоваться другая семантика.

0 голосов
/ 25 сентября 2012

Я использую оператор% везде, и я не думаю, что это замедляет код. На самом деле,% действительно быстро! Вы объявляете свои переменные с помощью cdef? Возможно, вы добавляете слишком много накладных расходов на Python только из-за этого.

0 голосов
/ 22 ноября 2011

Можете ли вы использовать встроенный divmod вместо этого?Эта функция принимает два аргумента и возвращает кортеж их отношения и остатка.

>>> 10 % 7
3
>>> divmod(10,7)
(1, 3)
>>> -7 % 3
2
>>> divmod(-7,3)
(-3, 2)
...