2013-04-02 2 views
3

Я делаю первые шаги с Cython, и мне интересно, как улучшить производительность еще больше. До сих пор я добирался до половины обычного (только на python) времени выполнения, но я думаю, что должно быть больше!Как улучшить производительность Cython?

Я знаю cython -a, и я уже набрал свои переменные. Но в моей функции по-прежнему много желтого цвета. Это потому, что cython не распознает numpy или есть что-то еще, что мне не хватает?

ответ

2

Я считаю, что вы можете воспользоваться математическими функциями из libc, поскольку вы вызываете np.sqrt и np.floor на скалярах. Это связано не только с накладными расходами на Python, но и с разными путями кодов в numpy ufuncs для скаляров и массивов. Таким образом, это включает, по крайней мере, переключатель типа.

+0

ah okai, я прочитал об этом день назад ... попробует это. – Sebastian

0

Я думаю, что это не проблема, так как я протестировал его с помощью official tutorial, он также отображается как желтый на каждой строке np. * И включает в себя python точно так же, как ваш код.

Пункт 3 в конце этой страницы должен был объяснить это:

Вызов функции NumPy/SciPy в настоящее время имеет над головой Python вызова; можно было бы сделать короткую вырезку из Cython прямо на C. (Однако для этого требуются некоторые изолированные и инкрементные изменения в этих библиотеках, для получения дополнительной информации см. список рассылки Cython).

+0

ah okai, я этого раньше не заметил! – Sebastian