mstange/samply

Command-line sampling profiler for macOS, Linux, and Windows

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 20 minutes ago
Type:CLI ToolCategory(s):Debugging & ProfilingDeveloper Tools
Added to GitGenius on September 15th, 2026
Created on May 25th, 2020
Open Issues & Pull Requests: 105 (+0)
GitHub issues: Enabled
Number of forks: 104
Total Stargazers: 4,424 (+2)
Total Subscribers: 17 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 28.6 hours
Mean response time: 50.2 days
90th percentile: 176.3 days
Tracked items: 61

Most active contributors

Sign in to see contributor activity.

How this project is maintained

97% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Three people close 79% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 61
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 428 days
Stale 30+ days: 57
Stale 90+ days: 53

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

samply is a command-line sampling profiler for macOS, Linux, and Windows that uses the Firefox profiler as its user interface.

samply addresses the need for efficient CPU profiling by recording stack traces at a configurable sampling interval, defaulting to 1000Hz. The tool works by prepending `samply record` to any command, spawning the target application as a subprocess and collecting performance data. On macOS and Windows, it captures both on-CPU and off-CPU samples, allowing developers to see blocking behavior in addition to active execution. On Linux, it relies on perf events for on-CPU sampling. Once recording completes, samply automatically opens the Firefox profiler in the default browser, loads the captured profile, and runs a local webserver to serve symbol information and source code, enabling interactive inspection of flame graphs, timelines, and call trees.

Developers should choose samply if they need a lightweight, cross-platform profiler that integrates with an established web-based analysis interface. It suits projects where developers want to avoid heavyweight tools or prefer the Firefox profiler's visualization capabilities. The tool keeps all data local until explicitly uploaded, addressing privacy concerns. For Rust projects, samply works best with binaries compiled in release mode with debug info enabled; similar practices apply to C++ and other compiled languages. The README does not compare samply to alternative profilers.

The project shows active development with regular commits addressing both features and bug fixes. Work spans multiple platforms with platform-specific implementations for Linux perf integration, Windows symbol server support, and macOS-specific sampling mechanisms. The maintainer responds to issues and incorporates user feedback, as evidenced by documented workarounds for known platform-specific challenges such as Linux mlock limits and capability-based access control.