Профилирование И Оптимизация Программ Go



Введение В этой статье я покажу вам, как профилировать и оптимизировать приложения Go, используя встроенные и универсальные инструменты, доступные в Linux. Что такое профилирование и оптимизация? Если ваша программа работает недостаточно быстро, использует слишком много памяти или неоптимально использует процессор, вы хотите выяснить, что не так, и исправить это — это профилирование и оптимизация.

Я дал это определение для того, чтобы сразу исключить вопросы некорректной работы приложения.

В этой статье мы не будем говорить о проблемах многопоточного программирования, полетов данных.

гонка данных ), о поиске ошибок (англ.

отладка ).

Для всего этого в Go есть свои утилиты и подходы, но эту тему мы оставим на будущее.



Профилирование и оптимизация программ Go



Процессор

Начнем сегодняшний обзор с процессора.

Go имеет встроенный профилировщик, созданный по образцу профилировщика из набора утилит gperftools для C/C++.

Более того, Go-версия утилиты pprof, предназначенная для визуализации результатов профилирования, теперь стала основной версией и рекомендуется для визуализации как для Go, так и для C/C++.

Когда дело доходит до классификации, профилировщик Go является профилировщиком «выборки».

профилировщик выборки ).

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

.

Практически все утилиты и профилировщики Go можно запускать несколькими способами, некоторые из которых описаны в этой статье.

Начнем с примера, а потом поговорим более подробно.



Пример

   

package perftest import (

Теги: #Go #linux #профилирование #оптимизация #программирование #Go
Вместе с данным постом часто просматривают: