【发布时间】:2019-06-01 10:32:24
【问题描述】:
我有一些视觉工作室项目:-
-
B1(无优化) -
B2(优化/O2):使用B1作为静态库 -
B3(无优化):使用B1和B2作为静态库
对B3/main.cpp有什么优化效果?
这里的B3 会比B3 和/O2 的情况更快地编译(并且.exe 的性能更差)吗?
我和/O2玩了很多次,但仍然对结果感到困惑。
我觉得标志是项目级别的。
如果我希望不经常修改B2,但经常修改B3,那么设置B2 = /O2 和B3 = no optimization 可能会更好地提高性能和最小编译时间。 (?)
对不起,如果这是一个新手问题。我懒得问几年了。
官方参考(没用):https://docs.microsoft.com/en-us/cpp/build/reference/o1-o2-minimize-size-maximize-speed?view=vs-2019
【问题讨论】:
-
不清楚你想问什么。你想说什么“使用B1和B2”?顺便说一句,是
/O2是项目级别标志。 -
@Atul 对不起,我的意思是静态库。我编辑了我的问题。谢谢。
-
您需要小心地在同一个应用程序中混合未优化的调试静态库和优化的静态库——我认为它在链接时无论如何都不会工作。您需要使用相同的标志编译所有模块。
-
没有唯一的答案。优化性能通常会增加编译时间和文件大小。静态链接不会影响编译时间,但会增加链接时间(例如,将
B1复制到B2中)。对程序启动和运行时性能的影响取决于操作系统如何将程序加载到内存中。一般来说,我会在整个过程中使用相同的优化设置,因为管理以不同方式构建系统不同部分的构建过程的人力成本可能超过构建时间或运行时性能方面的任何可衡量的收益。
标签: c++ visual-studio optimization