2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 o 11 12 13 14 15
Генеральный
партнёр


Все на CodeFest X →

Десятый. Юбилейный. 30–31 марта 2019

Сверхоптимизация кода на Python

Python как высокоуровневый скриптовый язык программирования общего назначения больше всего ориентирован на повышение производительности разработчика и читаемость кода. Из-за этого с ним работают в самых разных качествах: как с основным языком, как со средством расширения функциональности, для веб-программирования, научных расчетов, для хранения процедур БД и т.д.

Но при этом в большинстве сценариев его использования нет каких-либо «сверхестественных» требований к производительности кода, который пишет разработчик системы. Например, для веб-серверов есть множество накладных расходов, обусловленных выбранным фреймворком, работой с базой данных, удаленностью от пользователя и т.д. В итоге даже если программист ускорит свой код на порядки, этого практически никто не заметит.

Однако есть и сценарии, где код все-таки должен работать быстро, и желательно так быстро, насколько это возможно. И именно от этого быстродействия напрямую зависит надежность системы и качество сервиса для конечного пользователя. Подобные требования возникают для систем, где требуется обрабатывать поточные данные, не допускать переполнения входной очереди и выдавать результаты вычисления в реалтайме.

Я поделюсь с вами специфическими приемами программирования на Python, направленными на увеличение эффективности кода, которые я с любовью собирал и пробовал на своих проектах. А также пройдусь по «узким местам» — ключевым участкам кода, где интерпретатор проводит большую часть времени (с наибольшей вероятностью по причине того, что эти участки написаны плохо) и расскажу, как их оптимизировать.

Способы будут как простые, доступные на любом уровне владения Python, так и весьма специфичные, такие как альтернативные интерпретаторы (использование PyPy вместо стандартного CPython), jit-компиляторы и переписывание наиболее критичных участков кода на cython (для тех, кто хочет написать очень быстро, но не владеет Си в достаточной степени).

Видеоприглашение 


Презентация доклада:

 

Запись выступления:



Партнёры