GoDasturchi
Benchmarking Basics

Benchmarking Basics

Benchmark asoslari

Test kodning to'g'riligini, benchmark esa kodning tezligini o'lchaydi. Go'da benchmark yozish testga juda o'xshaydi, faqat Test o'rniga Benchmark va *testing.T o'rniga *testing.B ishlatiladi.

example.go
package main

import "testing"

func Sum(nums []int) int {
	total := 0
	for _, n := range nums {
		total += n
	}
	return total
}

func BenchmarkSum(b *testing.B) {
	nums := []int{1, 2, 3, 4, 5}
	for i := 0; i < b.N; i++ {
		Sum(nums)
	}
}

b.N — Go'ning o'zi avtomatik tanlaydigan takrorlar soni: dastlab kichik sondan boshlanib, ishonchli o'lchov olish uchun kerak bo'lguncha oshirib boriladi (masalan bir necha ming yoki million marta). Sikl ichida Sum(nums)ni aynan b.N marta chaqirib, Go har bir chaqiruv o'rtacha qancha vaqt (ns/op — operatsiyaga nanosekund) va xotira (B/op, allocs/op) sarflaganini hisoblaydi.

Benchmark natijasi mashinadan mashinaga farq qiladi (protsessor tezligiga bog'liq), shuning uchun ular "to'g'ri/noto'g'ri" emas, balki taqqoslash uchun ishlatiladi: masalan ikki xil algoritmni yozib, qaysi biri tezroq ekanini o'lchash uchun. Real loyihada bunday benchmark go test -bench=. buyrug'i bilan ishga tushiriladi (bizning interaktiv muhitimiz esa benchmark vaqtini o'lchay olmaydi, shuning uchun bu darsda faqat kod ko'rib chiqiladi).

Key Takeaway

Key Takeaway:

BenchmarkXxx(b *testing.B) va b.N — kod tezligini o'lchash uchun ishlatiladi; natijalar ikki yechimni taqqoslash uchun foydali, mutlaq "to'g'ri qiymat" emas.

NEXT UP

Advanced Benchmarking

Benchmarking Basics

Benchmark asoslari

Test kodning to'g'riligini, benchmark esa kodning tezligini o'lchaydi. Go'da benchmark yozish testga juda o'xshaydi, faqat Test o'rniga Benchmark va *testing.T o'rniga *testing.B ishlatiladi.

example.go
package main

import "testing"

func Sum(nums []int) int {
	total := 0
	for _, n := range nums {
		total += n
	}
	return total
}

func BenchmarkSum(b *testing.B) {
	nums := []int{1, 2, 3, 4, 5}
	for i := 0; i < b.N; i++ {
		Sum(nums)
	}
}

b.N — Go'ning o'zi avtomatik tanlaydigan takrorlar soni: dastlab kichik sondan boshlanib, ishonchli o'lchov olish uchun kerak bo'lguncha oshirib boriladi (masalan bir necha ming yoki million marta). Sikl ichida Sum(nums)ni aynan b.N marta chaqirib, Go har bir chaqiruv o'rtacha qancha vaqt (ns/op — operatsiyaga nanosekund) va xotira (B/op, allocs/op) sarflaganini hisoblaydi.

Benchmark natijasi mashinadan mashinaga farq qiladi (protsessor tezligiga bog'liq), shuning uchun ular "to'g'ri/noto'g'ri" emas, balki taqqoslash uchun ishlatiladi: masalan ikki xil algoritmni yozib, qaysi biri tezroq ekanini o'lchash uchun. Real loyihada bunday benchmark go test -bench=. buyrug'i bilan ishga tushiriladi (bizning interaktiv muhitimiz esa benchmark vaqtini o'lchay olmaydi, shuning uchun bu darsda faqat kod ko'rib chiqiladi).

Key Takeaway

Key Takeaway:

BenchmarkXxx(b *testing.B) va b.N — kod tezligini o'lchash uchun ishlatiladi; natijalar ikki yechimni taqqoslash uchun foydali, mutlaq "to'g'ri qiymat" emas.

NEXT UP

Advanced Benchmarking