我有一些视觉工作室项目:-
postgres.exe
(无优化)B1
(优化B2
):将/O2
用作静态库B1
(无优化):将B3
和B1
用作静态库对B2
的优化效果是什么?
与B3/main.cpp
也B3
的情况相比,这里B3
的编译速度更快(.exe的性能更差)吗?
我和/O2
一起玩了很多次,但仍然对结果感到困惑。
我认为该标志是项目级别的。
如果我希望不经常修改/O2
而是经常修改B2
,那么设置B3
和B2 = /O2
的性能和最小编译时间可能会更好。 (?)
很抱歉,如果这是一个新手问题。我不愿意问了几年。
官方参考(无用):https://docs.microsoft.com/en-us/cpp/build/reference/o1-o2-minimize-size-maximize-speed?view=vs-2019
答案 0 :(得分:0)
/O2
是项目级别的标志。
对于您的项目B3,所使用的库(B1和B2)的优化级别无关紧要。只要ABI相同,就可以使用this answer中提到的具有不同优化功能的库。
现在让我们回答您的问题。
与B3还是/ O2的情况相比,这里的B3会编译得更快(.exe的性能更差)吗?
优化标志与二进制文件的速度和大小有关,与编译时间无关。如果您将B3
指定为/O2
B3
可执行文件会更快
如果我希望不经常修改B2但经常修改B3,则可能是 更好的性能和最小的编译时间来设置B2 = / O2和B3 = 没有优化。 (?)
同样,不使用优化标志来减少编译时间。为了提高B3可执行文件的性能(速度),请使用/O2