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

Метод testing.B.StartTimer

Метод testing.B.StartTimer возобновляет отсчет времени выполнения бенчмарка после того, как он был остановлен методом testing.B.StopTimer. Обычно это используется для того, чтобы исключить время, затраченное на подготовительные операции (например, создание тестовых данных, инициализацию структур), из итогового времени выполнения измеряемого кода. Метод не принимает никаких параметров и не возвращает значений.

Синтаксис

b.StartTimer()

Пример

Рассмотрим пример, в котором мы измеряем производительность функции, но исключаем время на подготовку данных:

package main import ( "testing" ) func BenchmarkSum(b *testing.B) { data := make([]int, 1000) for i := 0; i < len(data); i++ { data[i] = i } b.ResetTimer() for i := 0; i < b.N; i++ { sum := 0 for _, v := range data { sum += v } _ = sum } }

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

"BenchmarkSum-8 100000 12345 ns/op"

Пример

В этом примере мы используем StopTimer и StartTimer для исключения времени на сложную подготовку данных внутри цикла бенчмарка:

package main import ( "testing" ) func BenchmarkProcess(b *testing.B) { for i := 0; i < b.N; i++ { b.StopTimer() data := make([]int, 100) for j := 0; j < len(data); j++ { data[j] = j * 2 } b.StartTimer() result := 0 for _, v := range data { result += v } _ = result } }

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

"BenchmarkProcess-8 50000 24690 ns/op"

Пример

Покажем, как StartTimer можно использовать для измерения только определенной части кода, исключая операции ввода-вывода:

package main import ( "testing" ) func BenchmarkCompute(b *testing.B) { b.StopTimer() values := []int{1, 2, 3, 4, 5} b.StartTimer() for i := 0; i < b.N; i++ { res := 0 for _, v := range values { res += v * v } _ = res } }

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

"BenchmarkCompute-8 100000000 12.3 ns/op"

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

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