Hi everybody!
This blog is about speeding up C/C++ compilers with precompiled headers.
Including lots of headers or big headers like bits/stdc++.h will increase compilation time. This can be annoying even with high speed processors. We can solve this using precompiled headers.
What are precompiled headers?
You can compile a header like stdc++.h to stdc++.h.gch and compiler will use it instead of compiling the header every time you are compiling your code. Less processing => Less time.
How to use precompiled headers?
Find your g++ default include directory
- Ubuntu:
/usr/include/x86_64-linux-gnu/c++/{version} - Windows:
C:\MinGW\lib\gcc\mingw32\{version}\include\c++
- Ubuntu:
Compile headers you need (I recommend using
bits/stdc++.hinstead of including lots of headers).g++ {header name} {flags you use when compiling a normal code}Put .gch files in the right place. You have 2 Options:
- Put them in the directory you find the headers & use
#include <header name> - Put them in your code directory & use
#include "header name"
I recommend first options because the second one will work only when .gch files are in the code directory and it takes a little extra time to search in code.
- Put them in the directory you find the headers & use
Compile a code and feel the difference!
Comment your issues or suggestions.
Be good and code fast ;)









.
:/
My own experience:
I use precompiled
stdc++.hin the default header directory and compile time decreased from 600ms to 100ms.Thanks for it. But it dont include
windows.hlibrary. Thanks already.I think you can precompile it separately.
.
mine got improved from 2.376 seconds to 0.692 seconds, many thanks
Thanks for your helpful blog (◕ᴗ◕✿)
So cute emoji (◕ᴗ◕✿) like iliya_mon The best joober in the world!
stdc++.h.gchfile has been created in the same folder where the originalstdc++.hfile is. But still this isn't speeding up compilation. (I am using code runner extension on VS code.)Am I missing something? :(
Are you sure you found the right directory?
Use
g++ -xc++ -E -v -to find it.The VS code extension is running a command
g++ filename.cpp -o filename.exewhile compiling and running. So am I supposed to add -o as a flag in command given in the blog.Update : NVM, now it is taking 2 seconds to compile, previously it was taking 7-8 seconds. My laptop processor might be the bottleneck, coz it is too old. But yeah, I see this as an absolute win :)
If you don't want to clutter your system directories with .gch files that may become outdated, you can also precompile
bits/stdc++.h, save the resulting .gch file where you prefer and add-include <gch file path, without .gch at the end>to your g++ command line.