Скорость выполнения программы зависит не только от аппаратной части, но и от языка, на котором она написана. Однако, не все языки программирования могут похвастаться высокой скоростью выполнения кода. Расскажем о некоторых подробнее.
Типизация динамическая и статическая
Условно языки программирования делятся на статически и динамически типизированные.
Статически типизированные языки используют компилятор для преобразования кода в программу. Языки с динамической типизацией используют интерпретатор, который выполняет код строка за строкой.
Языки с динамической типизацией, такие как Ruby и JavaScript, меньше подвержены ошибкам и легко читаются, но за это часто приходится платить скоростью выполнения.
Perl
Perl – язык общего назначения, изначально разработанный для создания длинных Shell-скриптов. Он используется в системном администрировании, сетевом программировании и разработке графических интерфейсов.
Perl создан для облегчения задач, которые невозможны в C и других языках Unix, но скорость его выполнения оставляет желать лучшего. Построчная интерпретация, отсутствие динамического компилятора и медленное развитие языка делают Perl одним из самых медленных в своем классе.
PHP
По данным аналитического портала W3Techs, 79,0% всех веб-сайтов используют PHP.
PHP испытывает проблемы со скоростью выполнения из-за динамической типизациии и отсутствия JIT-компилятора.
26 ноября 2020 года релиз восьмой версии PHP вышел с функцией оптимизации производительности и встроенным JIT-компилятором.
Ruby
Ruby – это объектно-ориентированный язык. Ruby позволяет одновременно использовать глобальную блокировку интерпретатора (GIL) для обеспечения потокобезопасности только одному потоку, что еще больше снижает его скорость.
25 декабря 2020 года представлена версия Ruby 3.0.0 с повышенной производительностью компилятора Ruby MJIT. Начиная с Ruby 3.0, JIT улучшает производительность в ограниченных рабочих нагрузках, таких как игры, ИИ или другие приложения, которые тратят большую часть времени на многократный вызов нескольких методов.
Python
В конце января Python занял третье место в рейтинге востребованных языков программирования среди нанимателей, согласно опросу CodinGame.
Однако, на данный момент скорость не является его сильной стороной. Python и Ruby во многом похожи. Проблемы со скоростью также вызваны глобальной блокировкой интерпретатора и построчным выполнением кода.
При этом многие Python библиотеки и функции реализованы на C++. Это дает некое увеличение в производительности.
Заключение
Вне зависимости от языка, главная причина проблем с производительностью – плохая реализация и дизайн кода. Языки с динамической типизацией работают медленнее, чем компилируемые. В тоже время они значительно удобнее и производительнее во время разработки.