РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
973 of 1593 menu

Метод testing.B.ReportMetric

Метод testing.B.ReportMetric добавляет пользовательскую метрику в результаты бенчмарка. Он принимает два параметра: числовое значение метрики типа float64 и строку с единицей измерения. Метод можно вызывать внутри бенчмарк-функции для добавления дополнительной информации о производительности, которая будет отображаться в выводе команды go test -bench.

Синтаксис

b.ReportMetric(value float64, unit string)

Пример

Добавим метрику количества аллокаций в бенчмарк:

package main import ( "testing" ) func BenchmarkReportMetric(b *testing.B) { for i := 0; i < b.N; i++ { _ = make([]int, 1000) } b.ReportMetric(1000, "allocs") }

Результат выполнения команды:

BenchmarkReportMetric-8 1000000000 0.000001 ns/op 1000 allocs

Пример

Добавим несколько пользовательских метрик в одном бенчмарке:

package main import ( "testing" ) func BenchmarkMultipleMetrics(b *testing.B) { totalItems := 0 for i := 0; i < b.N; i++ { slice := make([]int, 10) for j := 0; j < 10; j++ { slice[j] = j totalItems++ } } b.ReportMetric(float64(totalItems)/float64(b.N), "items/op") b.ReportMetric(float64(b.N)/1000, "thousands") }

Результат выполнения команды:

BenchmarkMultipleMetrics-8 1000000000 0.000000 ns/op 10 items/op 1000 thousands

Пример

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

package main import ( "testing" ) func BenchmarkWithAllocs(b *testing.B) { b.ReportAllocs() data := make([]int, 0, 1000) for i := 0; i < b.N; i++ { data = data[:0] for j := 0; j < 1000; j++ { data = append(data, j) } } b.ReportMetric(1.5, "custom_factor") }

Результат выполнения команды:

BenchmarkWithAllocs-8 100000000 0.0000 ns/op 0 B/op 0 allocs/op 1.5 custom_factor

Смотрите также

  • метод testing.B.ReportAllocs,
    который включает отчет о выделениях памяти
  • метод testing.B.ResetTimer,
    который сбрасывает таймер бенчмарка
  • метод testing.B.StartTimer,
    который запускает таймер бенчмарка
  • метод testing.B.StopTimer,
    который останавливает таймер бенчмарка
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить