HassanSajjad-302 wrote:

> If it is true, it implies the current build process spend > 90% time on build 
> systems and build system communications, it is really hard to believe...

Yes. I really think so. On a 32 thread modern machine with big hu, it should be 
>10x faster. One big-hu will replaces 100-300 header-files. So, instead of 
reading all these, compiler reads one memory mapped big hu. During big-hu 
compilation, compiler makes filesystem call of reading the header-files and 
writing the PCM file. During source compilation, the compiler does not make any 
other filesystem call except writing of the object-file. Configuration step 
with CMake takes 30s. In HMake, even with 10 configurations, it would still be 
less than 5s. An optimization that I am working on is to directly invoke the 
`-cc1` instead of first going through the driver. HMake at configuration-time 
will run the compile-command with `-###` and record the command. This should 
save 60ms on every compilation on windows. so 1100ms / 200ms = 5.5x but 1040ms 
/ 140ms = 7.4x. I did not implement it earlier because I thought that user 
might want different compile-flags. However, your 
[comment](https://chuanqixu9.github.io/c++/2025/12/03/Clangd-support-for-Modules.en.html)
 explained.

Ninja is intentionally designed to be dumb to be as fast as possible. CMake 
lowers custom-commands to Ninja. However, in HMake there is vertical 
integration. This makes different 
[kinds](https://github.com/HassanSajjad-302/HMake/blob/1d12c909c248b9c7a6cdd685acd7fa117ee494ef/hconfigure/header/BTarget.hpp#L33)
 of dependency specification extremely easy due to full context availability. 
At the same time it improves visibility to find out any redundant dependency 
specifications. This  should also provide a good 20-30% improvement.

What is your estimate? Please consider my proposal for compiling Clang in 3 
weeks. It should be atleast >6x faster than CMake.

https://github.com/llvm/llvm-project/pull/147682
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to