What an awfully ignorant and clueless blog post. From the article:<p>> What, exactly, is the point of "optimizing" your source files to only "include what you use" if it makes compile times 50% worse on average? It's frustrating that nobody seems to have put this central assumption of IWYU to the test. But I don't think it's all bad news.<p>The Include What You Use tool does not optimize anything. It fixes blatant mistakes in your project where source files lack the necessary include files they need to compile. Without these includes, your project only compiles by coincidence, because it relies on a very specific compilation and include order to indirectly define or forward-declare symbols your program needs to be able to compile.<p>When you include headers, your translation units will tend to grow, and the larger they grow the more code the compiler needs to go through to actually compile a translation unit.<p>Tools like Include What You Use should not be run in isolation. After you run them, your code will be able to compile regardless of the include order and compilation order, but some of these includes should be possible to get rid of by replacing them with forward-declararions or leverage other techniques such as PIMPLs.<p>Finally, if your compilation times bother you, you can always onboard your project to a compiler cache tool.