Функция 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,
которая возвращает процент покрытия кода тестами