ClangBuildAnalyzer
zapcc
ClangBuildAnalyzer | zapcc | |
---|---|---|
6 | 4 | |
931 | 1,238 | |
- | - | |
5.7 | 1.8 | |
2 months ago | almost 4 years ago | |
C++ | C++ | |
The Unlicense | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ClangBuildAnalyzer
-
Speeding up C++ build times
> On another note: C++ compiler should by default keep statistics about the chain of #include's / parsing during compilation and dump it to a file at the end and also summarize how badly you're re-parsing the same .h files during build.
Not exactly that, but do you know clang's -ftime-trace and tools like https://github.com/aras-p/ClangBuildAnalyzer which help analyzing where time is actually spent? (In small repeated headers I don't see much of a problem, but they of course may contain not so small things ...)
-
Build Insights Now Available in Visual Studio 2022
You can also use the following when you want to inspect multiple files: https://github.com/aras-p/ClangBuildAnalyzer
-
IncludeGuardian - improve build times by removing expensive includes
ClangBuildAnalyzer reports on parsing, build, and link time, whereas IncludeGuardian only reports on parsing time.
-
"Fast Kernel Headers" Tree -v1: Eliminate the Linux kernel's "Dependency Hell"
https://github.com/aras-p/ClangBuildAnalyzer is a very useful tool to quantify the cost of different headers (and other costly parts of the compile such as template instantiations). It doesn’t help with actually fixing such problems, but it’s a pretty good ruler to measure where the time is spent.
-
How to understand output of gcc -ftime-report
If you can compile with Clang, I suggest you to try ClangBuildAnalyzer
zapcc
- In 10 years, Clang has become 2x slower, but generates code that is 10-20% faster
-
"Fast Kernel Headers" Tree -v1: Eliminate the Linux kernel's "Dependency Hell"
C++ modules helps with the parsing problem similar to precompiled headers, but it doesn't help with the code execution at compile time problem. All your overload matching, free function lookup, SFINAE, concept matching, and consteval code needs executing and that can take very considerable time. Other than JITing all that stuff, and maybe running an in-memory server like https://github.com/yrnkrn/zapcc, I don't know what more can be done here.
- Zapcc: A caching C++ compiler based on Clang
-
Distcc – distribute builds across multiple machines simultaneously
If you use clang, that might be of interest: https://github.com/yrnkrn/zapcc
What are some alternatives?
Bear - Bear is a tool that generates a compilation database for clang tooling.
termux-ndk - android-ndk for termux
sol2 - Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:
sccache - Sccache is a ccache-like tool. It is used as a compiler wrapper and avoids compilation when possible. Sccache has the capability to utilize caching in remote storage environments, including various cloud storage options, or alternatively, in local storage.
ccache - ccache – a fast compiler cache
ayanami-nemesis-analyzer - A C/C++ Staitc Analyzer for Now.
include-what-you-use - A tool for use with clang to analyze #includes in C and C++ source files
lua-clang - Build dynamic clang library for lua
simdjson - Parsing gigabytes of JSON per second : used by Facebook/Meta Velox, the Node.js runtime, ClickHouse, WatermelonDB, Apache Doris, Milvus, StarRocks
opencilk-project - Monorepo for the OpenCilk compiler. Forked from llvm/llvm-project and based on Tapir/LLVM.
cppcoro - A library of C++ coroutine abstractions for the coroutines TS
codebrowser - Woboq CodeBrowser