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

Метод testing.B.StopTimer

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

Синтаксис

b.StopTimer()

Пример

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

package main import ( "testing" ) func BenchmarkProcess(b *testing.B) { // Останавливаем таймер для подготовки данных b.StopTimer() // Подготовка тестовых данных data := make([]int, 1000) for i := range data { data[i] = i } // Запускаем таймер перед основным циклом b.StartTimer() for i := 0; i < b.N; i++ { processData(data) } } func processData(data []int) int { sum := 0 for _, v := range data { sum += v } return sum }

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

"BenchmarkProcess-8 12345 98765 ns/op"

Пример

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

package main import ( "os" "testing" ) func BenchmarkFileParsing(b *testing.B) { b.StopTimer() // Чтение файла перед бенчмарком content, err := os.ReadFile("testdata/largefile.txt") if err != nil { b.Fatal(err) } b.StartTimer() for i := 0; i < b.N; i++ { parseContent(content) } } func parseContent(content []byte) int { // Парсинг данных return len(content) }

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

"BenchmarkFileParsing-8 2345 123456 ns/op"

Пример

Пример использования StopTimer для исключения времени на создание сложных структур данных:

package main import ( "testing" ) type User struct { ID int Name string Email string } func BenchmarkUserProcessing(b *testing.B) { b.StopTimer() // Создание тестовых пользователей users := make([]User, 100) for i := range users { users[i] = User{ ID: i, Name: "User", Email: "user@example.com", } } b.StartTimer() for i := 0; i < b.N; i++ { processUsers(users) } } func processUsers(users []User) int { total := 0 for _, u := range users { total += u.ID } return total }

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

"BenchmarkUserProcessing-8 4567 87654 ns/op"

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

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