ВЛИЯНИЕ ОПТИМИЗАЦИЙ НА ПРОГРАММЫ НА GO

ВЛИЯНИЕ ОПТИМИЗАЦИЙ НА ПРОГРАММЫ НА GO

Авторы публикации

Рубрика

Информационные технологии

Просмотры

57

Журнал

Журнал «Научный лидер» выпуск # 25 (278), Июнь ‘26

Поделиться

В данной статье рассматривается изменения кода после оптимизации, представленной в библиотеке языка Go. Основное внимание уделяется сравнению производительности кода до и после внедрения оптимизации, что позволяет на примере увидеть разницу между последовательным кодом и кодом c горутинами

Golang - это язык программирования, разработанный в Google командой Роберта Гриземера, Роба Пайка и Кена Томпсона, выделяющийся лаконичным синтаксисом и простой изучения. При этом данный язык программирования обеспечивает высокую производительность за счет компиляции, строгой типизации, встроенной поддержке параллелизма и сборке мусора.

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

Горутины - это легковесные потоки, управляемые средой выполнения Go. Для создания горутины необходимо использовать ключевое слово (“go”) перед вызовом функции (“go funcName()”).  Правильное использование горутин позволяет горутинам безопасно взаимодействовать и устраняет условия гонки. Когда горутина запускается, используется то же адресное пространство, что и другие горутины, что упрощает их взаимодействие.

Каналы – это типизированный поток, использующийся для основной способ обмена данными между горутинами. Канал создается с помощью ключевого слова (“chan”). Для отправки и получения данных через канал используется оператор стрелки (“<-“).

Для того чтобы оценить эффективность оптимизации на Go, нужно провести необходимые тесты.

Для примера будет использован код, выполняющий функцию суммирования числа 1 от N.

Изображение 1. Последовательный код

Изображение 2. Код с использованием горутин и каналов

Таблица 1.

Сравнение последовательного кода и кода с использованием горутин

Критерий

Последовательный код

Код с горутинами

Производительность

Выполняется в одной горутине, из-за чего подвергнется замедлению при большом объеме данных

Выполняется в нескольких горутинах впоследствии чего не будет подвержен замедлению

Читаемость и поддерживаемость

Проще для понимания, логика операций ясна

Сложнее для понимания. Требует понимание горутин и каналов

Количество используемой памяти

Использует определенное количество памяти для суммы и переменных

В зависимости от структуры задачи может потребоваться дополнительные ресурсы для хранения нескольких горутин

Обработка ошибок

Обработка ошибок отсутствует

Присутствует обработка ошибок с возможностью использования канала для их передачи

Гибкость

Изменения в параметрах выполнения сложны

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

 

В ходе исследования было выявлено, что применение оптимизации значительно влияет на код. Код, содержащий в себе оптимизацию, имеет повышенную гибкость, улучшенную производительность и улучшенную гибкость.

Список литературы

  1. Оптимизация производительности: https://appmaster.io/ru/blog/optimizatsiia-proizvoditel-nosti-golang
  2. Goroutines: https://appmaster.io/ru/blog/goroutines-ru
  3. Гольцман А. А. Оптимизация проектов на Go: https://purpleschool.ru/knowledge-base/article/project-optimization
  4. Denver 83 Горутины: что это и как работают: https://proglib.io/p/gorutiny-chto-takoe-i-kak-rabotayut-2022-07-31
Справка о публикации и препринт статьи
предоставляется сразу после оплаты
Прием материалов
c по
Осталось 5 дней до окончания
Размещение электронной версии
Загрузка материалов в elibrary
Публикация за 24 часа
Узнать подробнее
Акция
Cкидка 20% на размещение статьи, начиная со второй
Бонусная программа
Узнать подробнее