add dev-only profiling with pprof, runtime/trace, and operation timing
Wire up Go's standard profiling toolkit so it's automatically available in dev builds and completely absent from production. The profiling package uses build tags (dev/!dev) to eliminate all pprof, trace, and timing code from release binaries with zero new dependencies. - backend/profiling: pprof HTTP server on :6060, /debug/trace endpoint, block/mutex profiling, and TimeOp helper for structured operation timing - scripts/profile.sh: interactive menu-driven script that auto-selects free ports (8080-8089) so multiple profiles can be open simultaneously - Instrumented key operations: app init, database init, player load/restore, queue set/restore - Makefile targets: profile, profile-cpu, profile-heap, profile-trace - .gitignore: exclude trace-*.out and *.pprof artifacts
This commit is contained in:
@@ -36,3 +36,16 @@ install: ## Install all development dependencies (Go tools, frontend packages)
|
||||
|
||||
setup: install ## Install dependencies and set up git hooks
|
||||
go tool lefthook install
|
||||
|
||||
# Profiling (dev builds only — pprof server on :6060 starts automatically)
|
||||
profile: ## Open interactive profiling menu (CPU, heap, trace, etc.)
|
||||
@./scripts/profile.sh
|
||||
|
||||
profile-cpu: ## Capture CPU profile and open flame graph in browser
|
||||
@./scripts/profile.sh cpu
|
||||
|
||||
profile-heap: ## Capture heap profile and open in browser
|
||||
@./scripts/profile.sh heap
|
||||
|
||||
profile-trace: ## Capture execution trace and open trace viewer
|
||||
@./scripts/profile.sh trace
|
||||
|
||||
Reference in New Issue
Block a user