Выбор ответа Middle Тесты, бенчмарки и модули обновлено
Что показывает -benchmem
Вопрос
Что означает строка BenchmarkJoin-8 5000000 240 ns/op 64 B/op 2 allocs/op?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: GOMAXPROCS 8, 5 млн итераций, 240 нс, 64 Б и 2 аллокации на операцию. Суффикс -8 это значение GOMAXPROCS.
Варианты ответа
- GOMAXPROCS 8, 5 млн итераций, 240 нс, 64 Б и 2 аллокации на операциюправильный ответ
- 8 потоков, 5 млн байт, 240 нс всего, 64 операции и 2 ошибки
- 8 запусков, среднее 240 нс, 64 байта стека и 2 горутины
- 8 = номер бенчмарка в файле, 2 = число запущенных горутин
Разбор
Суффикс -8 это значение GOMAXPROCS. Второе число это b.N, подобранное фреймворком. ns/op время на итерацию, B/op и allocs/op (с -benchmem) выделения в куче на итерацию. Стековые выделения не считаются. Сравнивать результаты корректно через benchstat с -count=10.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Тесты, бенчмарки и модули»
- Minimal version selection как в Go modules
- Упрощённый go mod tidy: лишние и недостающие модули
- Сортировка версий по Semantic Versioning на Go
- Что выведет Go: табличный прогон без testing
- Команда запуска тестов с детектором гонок
- Fuzzing в Go
- Зачем go.sum
- httptest в тестах