diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/forward_declaration.png b/youtube/video_series/bit_blast/cxx_compile_time_optimization/forward_declaration.png new file mode 100644 index 0000000..0280334 Binary files /dev/null and b/youtube/video_series/bit_blast/cxx_compile_time_optimization/forward_declaration.png differ diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/include_cleaner.png b/youtube/video_series/bit_blast/cxx_compile_time_optimization/include_cleaner.png new file mode 100644 index 0000000..0a19b27 Binary files /dev/null and b/youtube/video_series/bit_blast/cxx_compile_time_optimization/include_cleaner.png differ diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/include_is_copy_paste.png b/youtube/video_series/bit_blast/cxx_compile_time_optimization/include_is_copy_paste.png new file mode 100644 index 0000000..801a810 Binary files /dev/null and b/youtube/video_series/bit_blast/cxx_compile_time_optimization/include_is_copy_paste.png differ diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/script.md b/youtube/video_series/bit_blast/cxx_compile_time_optimization/script.md index 9f80ff5..15e4646 100644 --- a/youtube/video_series/bit_blast/cxx_compile_time_optimization/script.md +++ b/youtube/video_series/bit_blast/cxx_compile_time_optimization/script.md @@ -19,30 +19,31 @@ or Mold Linker As you can see, mold uses all available cores throughout its execution and finishes quickly. In contrast, lld fails to utilize available cores most of the time. -On a side-note, this project could you financial support... The next step is to replace Make with ## Ninja no not this guy, but the build tool. -CCache +## CCache -Upgrade Compilers +## Upgrade Compilers Next item is... disabling your -Anti Virus +## Anti Virus / Windows Defender -Ensure Parallel Build +# Ensure Parallel Build -- Code Changes -- (from least to most intrusive) -Minimize Includes +# Modules -Forward Declaration -Precompiled Headers +# Minimize Includes -Unity Builds +# Forward Declaration + +# Precompiled Headers + +# Unity Builds -Modules -- Shut Up and Take My Money -- Upgrade Hardware @@ -50,7 +51,7 @@ Upgrade Hardware Build Over Network -# Sources +# References ## Repositories Mold: https://github.com/rui314/mold diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/a.out b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/a.out new file mode 100755 index 0000000..fc9018a Binary files /dev/null and b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/a.out differ diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/big.hpp b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/big.hpp new file mode 100644 index 0000000..a18cbf5 --- /dev/null +++ b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/big.hpp @@ -0,0 +1,13 @@ +#pragma once + +// Assume this file includes many other files... +// Which accumulate to 50'000 lines of source code! + +class Big +{ +public: + Big(int foo) + { + } +}; + diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/forward_decl.cpp b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/forward_decl.cpp new file mode 100644 index 0000000..3035495 --- /dev/null +++ b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/forward_decl.cpp @@ -0,0 +1,10 @@ +#include "./forward_decl.hpp" + +// This inclusion will not leak to other header files... +#include "./big.hpp" + +IncludedManyTimes::IncludedManyTimes(): + m_large_dependency(new Big { 1 }) +{ +} + diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/forward_decl.hpp b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/forward_decl.hpp new file mode 100644 index 0000000..880669c --- /dev/null +++ b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/forward_decl.hpp @@ -0,0 +1,16 @@ +#pragma once +// This file will be included MANY times... + +// Option A: forward declare on top of the file +class Big; + +class IncludedManyTimes +{ +public: + IncludedManyTimes(); + +private: + // Option B: forward declare when delcaring the variable + /* class */ Big *m_large_dependency; +}; + diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/include_is_copy_paste.cpp b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/include_is_copy_paste.cpp new file mode 100644 index 0000000..8e33c41 --- /dev/null +++ b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/include_is_copy_paste.cpp @@ -0,0 +1,8 @@ +#include + +int main() +{ + std::cout << "Hello world!" << std::endl; + return 0; + +#include "./right_curly_brace.hpp" diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/right_curly_brace.hpp b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/right_curly_brace.hpp new file mode 100644 index 0000000..5c34318 --- /dev/null +++ b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/right_curly_brace.hpp @@ -0,0 +1 @@ +} diff --git a/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/unused_headers.cpp b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/unused_headers.cpp new file mode 100644 index 0000000..a1e88f0 --- /dev/null +++ b/youtube/video_series/bit_blast/cxx_compile_time_optimization/snippets/unused_headers.cpp @@ -0,0 +1,6 @@ +#include + +int main() +{ + return 0; +}