Команда компьютерщиков из Массачусетского университета в Амхерсте, возглавляемая Эмери Бергером, недавно представила удостоенный наград профилировщик Python под названием Scalene. Программы, написанные на Python, общеизвестно медленны — до 60 000 раз медленнее, чем код, написанный на других языках программирования, — и Scalene позволяет эффективно определять, где именно Python отстает, позволяя программистам устранять неполадки и оптимизировать свой код для повышения производительности.
Существует много различных языков программирования — C++, Fortran и Java являются одними из наиболее известных, – но в последние годы один язык стал почти повсеместным: Python.
“Python – это язык, работающий от батареек, – говорит Бергер, профессор компьютерных наук в Колледже информации и компьютерных наук Мэннинга в UMass Amherst, – и он стал очень популярным в эпоху науки о данных и машинного обучения, потому что он настолько удобен в использовании”. Язык поставляется с библиотеками простых в использовании инструментов и имеет интуитивно понятный и читаемый синтаксис, позволяющий пользователям быстро приступить к написанию кода на Python.
“Но Python безумно неэффективен”, – говорит Бергер. “Он легко выполняется в 100-1000 раз медленнее, чем на других языках, а некоторые задачи на Python могут занимать в 60 000 раз больше времени”.
Программисты давно знают это, и чтобы помочь бороться с неэффективностью Python, они могут использовать инструменты, называемые “профилировщиками”. Профилировщики запускают программы, а затем точно определяют, какие части работают медленно и почему.
К сожалению, существующие профилировщики на удивление мало помогают программистам на Python. В лучшем случае они указывают на то, что какой-то участок кода работает медленно, и оставляют программисту возможность выяснить, что можно сделать, если вообще что-то можно сделать.
Команда Бергера, в которую входили аспиранты UMass по информатике Сэм Стерн и Хуан Альтмайер Пиццорно, создала Scalene, чтобы стать первым профилировщиком, который не только точно определяет неэффективность кода на Python, но и использует искусственный интеллект, чтобы подсказать, как код можно улучшить.
“Scalene сначала выявляет, где ваша программа тратит время впустую”, – говорит Бергер. Он фокусируется на трех ключевых областях — использовании центрального процессора, графического процессора и памяти, — которые отвечают за большую часть низкой скорости работы Python.
Как только Scalene определит, где у Python возникают проблемы с поддержанием, он затем использует искусственный интеллект — используя ту же технологию, лежащую в основе ChatGPT, — чтобы предложить способы оптимизации отдельных строк или даже групп кода. “Это практичная панель мониторинга”, – говорит Бергер. “Это не просто спидометр, сообщающий вам, насколько быстро или медленно едет ваш автомобиль, он сообщает вам, могли бы вы ехать быстрее, почему это влияет на вашу скорость и что вы можете сделать, чтобы разогнаться до максимальной скорости”.
“Компьютеры больше не становятся быстрее”, – говорит Бергер. “Будущие улучшения в скорости будут происходить не столько за счет улучшения аппаратного обеспечения, сколько за счет более быстрого и эффективного программирования”.
Scalene уже широко используется и был скачан более 750 000 раз с момента его публичного представления на GitHub. Статья, описывающая эту работу, появилась в этом году на конференции USENIX по проектированию и внедрению операционных систем, где она получила награду за лучшую работу.