While the compilation time issues makes sense, I don't see how you could have such drastically different binary sizes. While the intermediate object files might contain many duplicate symbols from inline functions, these should all be merged into one by the linker. The resulting binary should look roughly the same.