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

Функция testing.AllocsPerRun

Функция testing.AllocsPerRun измеряет количество выделений памяти (аллокаций) при выполнении переданной функции. В первый параметр передается количество итераций запуска, во второй параметр - функция, которую нужно протестировать. Возвращает функция два значения: среднее количество аллокаций за один запуск и среднее время выполнения в наносекундах. Эта функция полезна для оптимизации производительности и отслеживания утечек памяти.

Синтаксис

testing.AllocsPerRun(n int, f func()) float64

Пример 1

Давайте измерим количество аллокаций при создании слайса с помощью функции make:

package main import ( "fmt" "testing" ) func main() { allocations := testing.AllocsPerRun(100, func() { slice := make([]int, 0, 10) _ = slice }) fmt.Println("Allocations per run:", allocations) }

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

"Allocations per run: 0"

Пример 2

Измерим количество аллокаций при добавлении элементов в слайс с помощью функции append:

package main import ( "fmt" "testing" ) func main() { allocations := testing.AllocsPerRun(100, func() { slice := []int{1, 2, 3} slice = append(slice, 4, 5) _ = slice }) fmt.Println("Allocations per run:", allocations) }

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

"Allocations per run: 1"

Пример 3

Сравним количество аллокаций при создании структуры через указатель и через значение:

package main import ( "fmt" "testing" ) type User struct { Name string Age int } func main() { allocations := testing.AllocsPerRun(100, func() { user := &User{Name: "Alice", Age: 30} _ = user }) fmt.Println("Allocs for pointer:", allocations) allocations = testing.AllocsPerRun(100, func() { user := User{Name: "Bob", Age: 25} _ = user }) fmt.Println("Allocs for value:", allocations) }

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

"Allocs for pointer: 1" "Allocs for value: 0"

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

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