MCPcopy Index your code
hub / github.com/AlexsanderHamir/prof

github.com/AlexsanderHamir/prof @v1.8.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.8.2 ↗ · + Follow
505 symbols 1,397 edges 102 files 160 documented · 32%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Prof

Prof

Go benchmark profiling: go test + pprof, output under bench/<tag>/, compare two runs.

GoDoc Go Report Card License: MIT Version Go Version

Documentation · Demo (CLI) · Demo (TUI)

Start here

From your module root (go.mod):

prof ui

Menus first; prof auto, prof track, and flags are for scripts and CI. Examples, flags, and layout: documentation site (Quickstart, Collect, Compare).

Shell completion: prof completion -h.

Install

go install github.com/AlexsanderHamir/prof/cmd/prof@latest

Repo links

Requirements

Go 1.24.3+, optional Graphviz for PNG call graphs, go.mod at project root.

License

MIT

Extension points exported contracts — how you extend this code

Benchmark (Interface)
Benchmark runs the auto benchmark pipeline and discovers benchmarks in the module. [4 implementers]
internal/app/services.go
ProfileDecoder (Interface)
ProfileDecoder turns raw bytes into a pprof profile. Swap to use a different format or parser. [3 implementers]
parser/pipeline.go
Collector (Interface)
Collector organizes profile inputs under a tag (manual prof flow). [4 implementers]
internal/app/services.go
ProfileOpener (Interface)
ProfileOpener obtains a byte stream for a profile location (local path, URL, object key, etc.). [2 implementers]
parser/pipeline.go
Tracker (Interface)
Tracker compares baseline vs current profiles. [4 implementers]
internal/app/services.go
ProfileValidator (Interface)
ProfileValidator rejects malformed profiles before aggregation. [2 implementers]
parser/pipeline.go
Tools (Interface)
Tools runs optional post-processing commands on collected data. [4 implementers]
internal/app/services.go
SampleIndexSelector (Interface)
SampleIndexSelector chooses which entry in Sample.Value to aggregate (e.g. first sample type vs wall vs alloc). [2 implementers]
parser/pipeline.go

Core symbols most depended-on inside this repo

GetAllFunctionNamesV2
called by 13
parser/facade.go
CreateRootCmd
called by 13
cli/root.go
GetFunctionListEntriesV2
called by 12
parser/facade.go
OrganizeProfileByPackageFromProfileData
called by 9
parser/facade.go
Open
called by 8
parser/pipeline.go
TurnLinesIntoObjectsV2
called by 8
parser/facade.go
withDefaults
called by 7
parser/pipeline.go
GetAllFunctionNamesFromProfileData
called by 7
parser/facade.go

Shape

Function 335
Method 93
Struct 64
Interface 11
TypeAlias 2

Languages

Go100%

Modules by API surface

cli/commands_test.go47 symbols
parser/coverage_more_test.go32 symbols
parser/pipeline.go30 symbols
internal/app/app_test.go24 symbols
internal/app/services.go16 symbols
internal/app/defaults.go15 symbols
engine/tracker/profile_change_report.go15 symbols
tests/scenarios.go12 symbols
tests/assert.go12 symbols
parser/facade.go11 symbols
parser/parser_test.go10 symbols
parser/profile_io.go8 symbols

For agents

$ claude mcp add prof \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact