package main

import (
	"fmt"
	"os"
	"runtime/pprof"
)

// kerjaRingan mensimulasikan beban CPU yang hasilnya selalu sama.
func kerjaRingan() int {
	total := 0
	for i := range 200_000_000 {
		total += i % 7
	}
	return total
}

func main() {
	berkas, err := os.CreateTemp("", "cpu-*.prof")
	if err != nil {
		fmt.Println("gagal membuat berkas profil:", err)
		return
	}

	if err := pprof.StartCPUProfile(berkas); err != nil {
		fmt.Println("gagal memulai profil CPU:", err)
		return
	}
	hasil := kerjaRingan()
	pprof.StopCPUProfile()
	berkas.Close()

	fmt.Println("hasil kerja:", hasil)
	fmt.Println("profil CPU ditulis: true")

	for _, nama := range []string{"goroutine", "threadcreate", "heap", "allocs", "block", "mutex"} {
		profil := pprof.Lookup(nama)
		ada := profil != nil
		fmt.Printf("profil %-12s terdaftar: %v\n", nama, ada)
	}
}
