Gha*_*uni 9 c++ optimization visual-studio-2010 protocol-buffers
在Visual Studio 2010中,我有一个C/C++静态库项目.当我在发布模式下打开选项整个程序优化时,我获得了超过90 MB的.lib文件!当我关闭此选项时,大小减少到24 MB.该库包含使用proto-buffer生成的数百个类.
我想知道为什么这个选项会增加尺寸?我们必须在哪些条件下关掉它?
编辑:感谢chrisaycock将MO更改为MB
Leo*_*son 17
整个程序优化意味着直到链接阶段才对事物进行优化.
静态库的大小不是要看的东西.在此模式下,静态库可能充满了最终优化/链接阶段所需的额外信息.如果您没有进行整个程序优化,那么在构建静态库之后可能会丢弃该信息,但是当您需要将信息保留到结束时.
请查看最终可执行文件的大小.(它可能仍会增加,但它不应该增加如此巨大的数量.)
我想知道为什么这个选项会增加尺寸?
因为您正在构建静态库,而不是可执行文件.整个程序优化留下了很多优化,直到链接时间(而不是在编译时).因此,您的库包含未经优化的"中间表示"而不是汇编代码.
我们必须在哪些条件下关掉它?
对于静态库,正如您刚刚发现的那样.