Первое использование golang benchmarks в Ubuntu WSL

Привет!

Несколько дней назад я впервые столкнулся с бенчмарками в go и сделал практическое занятие для своего класса. Если вы используете Windows + WSL Ubuntu для Golang, мой опыт будет полезен для вас.

Я столкнулся с парой проблем с компонентами, давайте поговорим об этом.

Отсутствие Graphvis для pprof

Я создал свой первый профиль

$ go test -bench=BenchmarkGetDomainStat -cpuprofile=cpu -memprofile=mem
$ go tool pprof -http="localhost:8080" cpu

Serving web UI on http://localhost:8080
Failed to execute dot. Is Graphviz installed?
exec: "dot": executable file not found in $PATH

Вход в полноэкранный режим Выход из полноэкранного режима

Graphviz отсутствует. Погуглите, нам нужно установить graphviz:

$ sudo apt install graphviz gv
Войти в полноэкранный режим Выйти из полноэкранного режима

Если у вас возникают сбои, как у меня:

E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/g/ghostscript/ghostscript-x_9.26~dfsg+0-0ubuntu0.18.04.15_amd64.deb  404  Not Found [IP: 91.189.91.38 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Войти в полноэкранный режим Выйти из полноэкранного режима

просто обновите и повторите:

$ sudo apt-get update
$ sudo apt install graphviz gv
Войти в полноэкранный режим Выйти из полноэкранного режима

Вау! У вас есть graphviz и pprof, готовые показать вам крутые графики.

Нет benchstat

Я установил Go 1.17.1 и забыл обо всем. Но в случае с бенчмарками я хочу сравнить два результата:

$ benchstat benchmarks/00 benchmarks/01
benchstat: command not found
Вход в полноэкранный режим Выход из полноэкранного режима

WTF? По умолчанию бенчстат не установлен, давайте это исправим:

$ go get golang.org/x/perf/cmd/benchstat
go: downloading golang.org/x/perf v0.0.0-20220722155240-3d85ee92886d
go get: added golang.org/x/perf v0.0.0-20220722155240-3d85ee92886d
Войти в полноэкранный режим Выйти из полноэкранного режима

Также go get сообщает мне об устаревании и предлагает использовать ‘go install’. Хорошая идея, чтобы попробовать в следующий раз.

Теперь проверим результат:

$ benchstat benchmarks/00 benchmarks/01
name             old time/op  new time/op  delta
GetDomainStat-8   1.15s ±75%   0.36s ±11%  -69.05%  (p=0.000 n=10+10)
Войти в полноэкранный режим Выход из полноэкранного режима

Круто, benchstat доступен, и мои оптимизации работают хорошо.

Надеюсь, мой гугл будет полезен и сэкономит несколько минут для вас, мои дорогие суслики Windows WSL!

Оцените статью
devanswers.ru
Добавить комментарий