Анонс Ruby digest: Speeding Things Up

Nikolai Rubanov (Darksa)
Заметки про Evrone
2 min readMar 6, 2023

Наш мартовский Ruby-дайджест предлагает поразмышлять над консервативным подходом к внедрению новых функций в язык. Также подумаем, как предупредить возникновение memory bloat в Rails и узнаем, как Джереми Эванс решил ускорить запуск процессов.

Если глобально взглянуть на программирование, то его можно сравнить с моделированием реальности при помощи ограниченного набора слов и конструкций. Чем больше у вас их в запасе, тем проще описывать сложные алгоритмы и структуры данных. Последние годы Ruby разрабатывается с упором на стабильность и надёжность. При этом внедрение новых функций может длиться годами. Такой консервативный подход, по мнению некоторых разработчиков, негативно сказывается на развитии языка.

Извлечение данных из БД или Redis, чтение файлов с диска или выполнение сетевого запроса может привести к резкому выделению большого объема памяти. Если это происходит на локальной машине разработчика, то не приводит к каким-либо проблемам. Но вот в больших Rails-инсталляциях раздувание памяти может обойтись очень дорого. Так что нужно не ликвидировать последствия катастрофы, а заранее предсказывать её появление.

При разработке больших приложений сразу несколько факторов начинают играть решающую роль. Скорость запуска процессов часто становится бутылочным горлышком и требуется много усилий, чтобы приложение соответствовало требованиям заказчика. Анализируя профиль быстродействия можно заметить, что причиной снижения скорости становится загрузка библиотек и парсинг их содержимого. Сократить время можно, сделав их предварительную загрузку. Если в памяти уже есть заранее подгруженные библиотеки, то Ruby не станет тратить на это драгоценное время.

Подробности читайте в полной версии нашего дайджеста.

--

--