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

6 вопросов

Инструменты профилирования Go: go tool pprof (CPU, heap, goroutine), go tool trace, бенчмарки (b.ResetTimer, b.ReportAllocs), flame graph. Поиск узких мест и оптимизация аллокаций.

1 Для чего предназначен go tool pprof и как его обычно запускают? 🟡 Средний
Ответ: A) Анализ профилей CPU, памяти и горутин; go tool pprof <файл или URL>

pprof - инструмент анализа профилей (CPU, heap, goroutine и др.), запускается как go tool pprof с путем к файлу или HTTP-эндпоинту.

Подробнее →
2 Как корректно собрать CPU-профиль работающего Go-приложения? 🟡 Средний
Ответ: A) Через runtime/pprof: StartCPUProfile в начале, StopCPUProfile в конце

CPU-профиль собирают через pprof.StartCPUProfile/StopCPUProfile (или -cpuprofile в go test).

Подробнее →
3 Что дает heap-профиль (memory profiling) и как с его помощью искать лишние аллокации? 🟡 Средний
Ответ: A) Снимок текущей кучи; по top/list видно, какие функции аллоцируют больше всего

Heap-профиль - снимок аллокаций в куче; top/list показывают, кто аллоцирует; сравнение снимков выявляет утечки.

Подробнее →
4 Зачем в бенчмарке вызывать b.ResetTimer() и b.ReportAllocs()? 🟡 Средний
Ответ: A) ResetTimer исключает время подготовки из замера; ReportAllocs включает отчет по аллокациям

ResetTimer исключает из замера подготовку; ReportAllocs выводит allocs/op и B/op.

Подробнее →
5 Что показывает flame graph (граф пламени) и для чего его удобно использовать? 🟡 Средний
Ответ: A) Иерархию вызовов по стеку: ширина - доля времени/памяти; наглядно видно узкие места

Flame graph - визуализация стека вызовов: ширина сегмента - доля метрики, высота - цепочка вызовов.

Подробнее →
6 Что позволяет отслеживать go tool trace и в чем его отличие от pprof? 🔴 Сложный
Ответ: A) Временную шкалу: горутины, планировщик, GC, блокировки; визуализация событий во времени

trace дает временную шкалу событий (горутины, планировщик, GC, блокировки); pprof дает агрегированные профили.

Подробнее →
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.