Блог пользователя ilia_rr

Автор ilia_rr, 4 года назад, По-английски

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?

  1. Find your g++ default include directory

    • Ubuntu: /usr/include/x86_64-linux-gnu/c++/{version}
    • Windows: C:\MinGW\lib\gcc\mingw32\{version}\include\c++
  2. Compile headers you need (I recommend using bits/stdc++.h instead of including lots of headers).

    g++ {header name} {flags you use when compiling a normal code}

  3. 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.

Compile a code and feel the difference!

Comment your issues or suggestions.

Be good and code fast ;)

  • Проголосовать: нравится
  • +44
  • Проголосовать: не нравится

»
4 года назад, скрыть # |
Rev. 4  
Проголосовать: нравится -49 Проголосовать: не нравится

.

»
4 года назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

My own experience:

I use precompiled stdc++.h in the default header directory and compile time decreased from 600ms to 100ms.

»
4 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Thanks for it. But it dont include windows.h library. Thanks already.

»
4 года назад, скрыть # |
Rev. 4  
Проголосовать: нравится -26 Проголосовать: не нравится

.

»
4 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

mine got improved from 2.376 seconds to 0.692 seconds, many thanks

»
4 года назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

Thanks for your helpful blog (◕ᴗ◕✿)

»
4 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

stdc++.h.gch file has been created in the same folder where the original stdc++.h file is. But still this isn't speeding up compilation. (I am using code runner extension on VS code.)

Am I missing something? :(

»
4 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

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.