CodeBlanks Logo Icon CodeBlanks

go test -cpuprofile

  • Go kursu
  • İleri seviye
  • Ders 56/68
  • 4 dk

Test sırasında profile almayı öğrenirsin.

Testlerle profil

Benchmark'lar profil almak için en kolay yerdir; ayrı kod yazmadan bayrak eklemek yeterlidir:

go test -bench=Ayristir -cpuprofile cpu.out -memprofile mem.out ./parser
go tool pprof parser.test cpu.out

Profil yalnızca benchmark'ın ölçtüğü kodu kapsar; üretim trafiğini değil, tekrarlanabilir bir senaryoyu gösterir.

Diğer test profilleri

-blockprofile kanallarda ve kilitlerde bekleme noktalarını, -mutexprofile kilit çekişmesini kaydeder. -trace trace.out ise olay zaman çizelgesi üretir. Profil alırken -run=^$ eklemek normal testlerin çalışmasını engeller ve sonuçları temiz tutar.

Uygulama Benchmark fonksiyonu

testing.Benchmark ile programdan benchmark çalıştır: strings.Repeat("go", 100) çağıran bir func(b *testing.B) ver. Sonucun N değerinin 0'dan büyük olduğunu yazdır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "strings"
    "testing"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "strings"
    "testing"
)

func main() {
    r := testing.Benchmark(func(b *testing.B) {
        for i := 0; i < b.N; i++ {
            strings.Repeat("go", 100)
        }
    })
    fmt.Println(r.N > 0)
}

Beklenen çıktı

true

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>-benchmem</code> bayrağı ne ekler?

  • CPU profili
  • Yarış denetimi
  • Test kapsamı
  • İşlem başına bayt ve ayırma sayısı Doğru cevap

Açıklama: -benchmem çıktıya B/op ve allocs/op sütunlarını ekler; profil dosyası üretmez.

2 Bellek profili bayrağı

Soru
go test -bench=. ____ mem.out
Cevap
go test -bench=. -memprofile mem.out

Açıklama: -memprofile benchmark sırasında heap profilini dosyaya yazar.

3 go test bayrakları

Kavram Anlamı
-cpuprofile CPU profili
-memprofile Bellek profili
-benchmem B/op, allocs/op
-run=^$ Testleri atla

İleri seviye bölümündeki tüm dersler