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

Поле testing.B.N

Поле N структуры testing.B задает количество итераций, которые будет выполнены в бенчмарке. Это поле устанавливается фреймворком автоматически перед запуском бенчмарка на основе времени выполнения каждой итерации и значения флага -benchtime. Внутри бенчмарка поле N используется для цикла, который выполняет измеряемый код.

Синтаксис

b.N

Поле N имеет тип int и доступно только для чтения. Оно используется внутри бенчмарк-функций для управления количеством повторений измеряемого кода.

Пример

Давайте создадим простой бенчмарк, который измеряет время выполнения операции сложения:

package main import ( "fmt" "testing" ) func BenchmarkAddition(b *testing.B) { for i := 0; i < b.N; i++ { _ = 1 + 1 } } func main() { br := testing.Benchmark(BenchmarkAddition) fmt.Printf("N: %d\n", br.N) fmt.Printf("Time per op: %s\n", br.T) }

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

"N: 1000000000" "Time per op: 285.5 ns/op"

Пример

Бенчмарк для проверки конкатенации строк с использованием поля N для управления итерациями:

package main import ( "fmt" "testing" ) func BenchmarkConcat(b *testing.B) { for i := 0; i < b.N; i++ { s := "Hello" + "World" _ = s } } func main() { res := testing.Benchmark(BenchmarkConcat) fmt.Printf("N: %d\n", res.N) fmt.Printf("Time per op: %s\n", res.T) }

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

"N: 1000000000" "Time per op: 267.1 ns/op"

Пример

Более сложный пример с функцией, которая использует поле N для перебора элементов слайса:

package main import ( "fmt" "testing" ) func sumSlice(s []int) int { total := 0 for _, v := range s { total += v } return total } func BenchmarkSumSlice(b *testing.B) { data := []int{1, 2, 3, 4, 5} for i := 0; i < b.N; i++ { _ = sumSlice(data) } } func main() { res := testing.Benchmark(BenchmarkSumSlice) fmt.Printf("N: %d\n", res.N) fmt.Printf("Time per op: %s\n", res.T) }

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

"N: 50308672" "Time per op: 31.54 ns/op"

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

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