zapcc
ClangBuildAnalyzer
zapcc | ClangBuildAnalyzer | |
---|---|---|
4 | 6 | |
1,238 | 937 | |
- | - | |
1.8 | 5.7 | |
almost 4 years ago | 3 months ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | The Unlicense |
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.
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
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
What are some alternatives?
termux-ndk - android-ndk for termux
Bear - Bear is a tool that generates a compilation database for clang tooling.
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.
sol2 - Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:
ayanami-nemesis-analyzer - A C/C++ Staitc Analyzer for Now.
ccache - ccache – a fast compiler cache
lua-clang - Build dynamic clang library for lua
include-what-you-use - A tool for use with clang to analyze #includes in C and C++ source files
opencilk-project - Monorepo for the OpenCilk compiler. Forked from llvm/llvm-project and based on Tapir/LLVM.
simdjson - Parsing gigabytes of JSON per second : used by Facebook/Meta Velox, the Node.js runtime, ClickHouse, WatermelonDB, Apache Doris, Milvus, StarRocks
codebrowser - Woboq CodeBrowser
cppcoro - A library of C++ coroutine abstractions for the coroutines TS