A CLI tool to profile and analyze Swift compilation times by parsing Xcode build logs.
xcprofiler is a command-line tool that profiles Swift project compilation times by analyzing Xcode build logs. It helps developers identify which functions and files are taking the longest to compile, enabling targeted optimizations to speed up build processes. The tool extracts timing data from Xcode's activity logs and presents it in a readable format.
Swift developers and iOS/macOS engineering teams who want to optimize their project's compilation performance and reduce build times, especially in large codebases.
xcprofiler provides granular, actionable insights into Swift compilation bottlenecks directly from Xcode logs, unlike generic profiling tools. Its extensible reporter system and Danger integration make it easy to incorporate into existing development workflows.
:chart_with_upwards_trend: CLI to profile compilation time of Swift project
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Parses Xcode .xcactivitylog files to provide per-function and per-file timing data, enabling precise identification of slow-compiling code segments.
Supports terminal tables, JSON, and custom reporters, allowing integration into various workflows, as shown in the extensible reporting section.
Offers a Danger plugin for automated performance checks in pull requests, facilitating continuous integration and regression detection.
Enables implementation of custom reporters via Ruby, making it adaptable to specific team needs and toolchains.
Requires manually adding -Xfrontend -debug-time-function-bodies flags to Xcode projects, which can be error-prone and disrupt existing configurations.
Tightly coupled with Xcode's build logs and Ruby for installation, limiting usability in non-Xcode environments or teams avoiding Ruby dependencies.
Tested on older Ruby versions (2.3/2.4) and developed as part of work for Cookpad, which may indicate slower updates or compatibility issues with newer systems.