Добавить в корзинуПозвонить
Найти в Дзене
PythonTalk

Python ускорили в 40 раз с помощью его "убийцы"

Помните язык Mojo, который пророчили в "убийцы Python"? Но недавно произошло кое-что действительно важное: Mojo научился "дружит" с Python. Теперь можно написать сверхбыструю функцию на Mojo и вызвать её из обычного Python-кода. Один программист провёл эксперимент, чтобы проверить, а есть ли в этом смысл. Результаты получились интересными: Mojo обогнал в скорости даже NumPy. Но есть один опасный нюанс, из-за которого использовать его в реальных проектах пока нельзя. Первый тест был простым — посчитать факториал числа 100. И тут Mojo потерпел фиаско. Он просто выдал 0. Почему так произошло? Дело в том, что результат factorial(100) — это огромное число, которое не влезает в стандартные типы данных, используемые в быстрых, компилируемых языках. Произошло переполнение. А вот старый-добрый Python, хоть и медленнее, но спокойно посчитал это число. У него под капотом работает так называемая "длинная арифметика", которая позволяет оперировать числами практически любого размера. Но не спешите с
Оглавление

Помните язык Mojo, который пророчили в "убийцы Python"? Но недавно произошло кое-что действительно важное: Mojo научился "дружит" с Python. Теперь можно написать сверхбыструю функцию на Mojo и вызвать её из обычного Python-кода.

Один программист провёл эксперимент, чтобы проверить, а есть ли в этом смысл. Результаты получились интересными: Mojo обогнал в скорости даже NumPy. Но есть один опасный нюанс, из-за которого использовать его в реальных проектах пока нельзя.

Провал: где Mojo сел в лужу

Первый тест был простым — посчитать факториал числа 100. И тут Mojo потерпел фиаско. Он просто выдал 0.

Почему так произошло? Дело в том, что результат factorial(100) — это огромное число, которое не влезает в стандартные типы данных, используемые в быстрых, компилируемых языках. Произошло переполнение.

А вот старый-добрый Python, хоть и медленнее, но спокойно посчитал это число. У него под капотом работает так называемая "длинная арифметика", которая позволяет оперировать числами практически любого размера.

Триумф: где Mojo обогнал всех (даже NumPy!)

Но не спешите списывать Mojo со счетов. Второй тест был на реальную производительность — подсчёт простых чисел. Это задача, которая сильно нагружает процессор.

Автор написал три одинаковых, неоптимизированных алгоритма:

  1. На чистом Python.
  2. На NumPy (популярная библиотека для быстрых вычислений).
  3. На Mojo.

И вот тут результаты поражают.

  • Чистый Python: ~0.45 секунды
  • NumPy: ~0.26 секунды
  • Mojo: ~0.011 секунды

Только вдумайтесь: Mojo оказался в 40 раз быстрее обычного Python и в 20 раз быстрее специализированной библиотеки NumPy, которая сама по себе является стандартом скорости в мире Python!

Так что в итоге? Пора учить Mojo?

Вывод простой и двойственный.

С одной стороны, Mojo — это всё ещё очень сырой инструмент.Использовать его в реальных коммерческих проектах прямо сейчас — самоубийство.

С другой стороны, у него есть потенциал. Если разработчикам удастся "допилить" язык и сделать его более безопасным и стабильным, мы получим невероятный инструмент. Представьте: вы пишете 95% своего проекта на удобном и простом Python, а самые "тяжёлые" 5% кода переписываете на Mojo и получаете 40-кратное ускорение.

Похоже, история "убийцы Python" заканчивается тем, что он становится не врагом, а мощным союзником.