Comments 20
Написано, конечно, хорошо, спасибо, но кат, кат!
0
А разве нет? Сорри, я вроде вставлял. Сейчас будет.
+1
Вот она! Прекрасная статья, а не 7 предложений и 15 строк банального листинга. Спасибо вам!
+8
Замечательно. Нет, потрясающе.
+2
За статью спасибо — приятно когда на Хабре все же встречается повод немного размять мозги :)
Мне кажется, что достойным «финальным аккордом» было бы логично выбросить GPP и сделать свой препроцессор со специальным синтаксисом конкретно под нашу задачу (выделение в коде Python и Cython блоков).
Мне кажется, что достойным «финальным аккордом» было бы логично выбросить GPP и сделать свой препроцессор со специальным синтаксисом конкретно под нашу задачу (выделение в коде Python и Cython блоков).
+2
Первоначально я как раз собирался сделать мини-препроцессор, чтобы Cython-код можно было указывать просто в комментариях, наподобие
cpdef unsigned long long sum_even_fibo_le(unsigned long long upb
. Но, раз GPP уже существует, почему бы не воспользоваться им? 0
Тьфу. Наподобие
#cpdef unsigned long long sum_even_fibo_le(unsigned long long upb):
0
Спасибо за статью!
1. Интересует: а стоит ли овчинка выделки?
Сейчас я использую Питон + критические модули на C
Проводили ли вы сравнение?
2. Интересует ваша среда сборки и развёртывания. (Вижу вы используете Джанго)
Как у вас это организовано?
1. Интересует: а стоит ли овчинка выделки?
Сейчас я использую Питон + критические модули на C
Проводили ли вы сравнение?
2. Интересует ваша среда сборки и развёртывания. (Вижу вы используете Джанго)
Как у вас это организовано?
0
1. Интересует: а стоит ли овчинка выделки?
Сейчас я использую Питон + критические модули на C
Проводили ли вы сравнение?
Стоит. Cython транслируется именно в C (или, при
cython --cplus
, в C++), который затем уже компилируется тем же самым gcc/g++, с любыми настройками оптимизаций. Скачок в производительности заметный даже при использовании Python-типов данных (раза в два); при использовании C-типов он и того больше. Будет минутка — я постараюсь упомянуть выигрыш в производительности у Cython-версии функции в примере по сравнению с Python-версией. 0
Проверил.
Суть бенчмарка — вызов функции
Python-овый код при интерпретировании: 13,07s.
Python-овый код без модификаций, при компиляции Cython-ом: 4,48s
Cython-овый код (по сути, только Cython-овые заголовки вместо Python-овых): 0,47s.
Суть бенчмарка — вызов функции
sum_even_fibo_le()
в цикле, 1048575 раз: print(sum(sum_even_fibo_le(n) for n in xrange(1, 0xFFFFF)))
. Python-овый код при интерпретировании: 13,07s.
Python-овый код без модификаций, при компиляции Cython-ом: 4,48s
Cython-овый код (по сути, только Cython-овые заголовки вместо Python-овых): 0,47s.
0
2. Интересует ваша среда сборки и развёртывания. (Вижу вы используете Джанго)
Как у вас это организовано?
Django использую, но Cython в нём — пока нет. Стыдно признаться, но я олдскулен, и мне пока для всего хватает Makefile. Правда, в ключевом проекте размер Makefile-а уже приближается к 15k, так что в какое-то ближайшее время я буду исследовать distutils. Но не раньше, чем Makefile исчерпает себя.
0
UFO just landed and posted this here
Производительность компилированного Cython-кода заметно выше, чем производительность интерпретации Python-ом.
0
Посмотрите на мой комментарий habrahabr.ru/blogs/python/63109/#comment_1750275 — это даёт неплохой выигрыш в производительности.
0
UFO just landed and posted this here
Статья интересная, спасибо.
Вот только человек, который придет поддерживать проект после вас ни один раз вспомнит вас нехорошим словом. Да и в продакшн код с таким маргинальным подходом лично я бы никогда не пустил.
Если требуются такие ухищрения, то стоит подумать об использования другого инструмента, т.к. питон для вашей задачи, возможно, плохо подходит.
Вот только человек, который придет поддерживать проект после вас ни один раз вспомнит вас нехорошим словом. Да и в продакшн код с таким маргинальным подходом лично я бы никогда не пустил.
Если требуются такие ухищрения, то стоит подумать об использования другого инструмента, т.к. питон для вашей задачи, возможно, плохо подходит.
0
Интересная заметка, постараюсь подход применить как-нибудь на практике.
А где сейчас используется Cython?
А где сейчас используется Cython?
0
В смысле, в каких отраслях/областях? Можно использовать везде, где можно использовать Python (т.е., едва ли не везде вообще, кроме разве что программирования модулей ядра :) ) — от веба до игр, движков и числодробилок.
Или, в смысле, в известных широким кругам проектах? wiki.cython.org/projects — самое известное из списка, пожалуй, Sage.
Или, в смысле, в известных широким кругам проектах? wiki.cython.org/projects — самое известное из списка, пожалуй, Sage.
0
Sign up to leave a comment.
Полиглоты в продакшн Питона