优化标志,例如/ O2 =在文件/项目/或解决方案级别进行优化?

时间:2019-06-01 01:31:16

标签: c++ visual-studio optimization

我有一些视觉工作室项目:-

  • postgres.exe(无优化)
  • B1(优化B2):将/O2用作静态库
  • B1(无优化):将B3B1用作静态库

B2的优化效果是什么?

B3/main.cppB3的情况相比,这里B3的编译速度更快(.exe的性能更差)吗?

我和/O2一起玩了很多次,但仍然对结果感到困惑。
我认为该标志是项目级别的。

如果我希望不经常修改/O2而是经常修改B2,那么设置B3B2 = /O2的性能和最小编译时间可能会更好。 (?)

很抱歉,如果这是一个新手问题。我不愿意问了几年。

官方参考(无用):https://docs.microsoft.com/en-us/cpp/build/reference/o1-o2-minimize-size-maximize-speed?view=vs-2019

1 个答案:

答案 0 :(得分:0)

/O2是项目级别的标志。

对于您的项目B3,所使用的库(B1和B2)的优化级别无关紧要。只要ABI相同,就可以使用this answer中提到的具有不同优化功能的库。

现在让我们回答您的问题。

  

与B3还是/ O2的情况相比,这里的B3会编译得更快(.exe的性能更差)吗?

优化标志与二进制文件的速度和大小有关,与编译时间无关。如果您将B3指定为/O2

,则B3可执行文件会更快
  

如果我希望不经常修改B2但经常修改B3,则可能是   更好的性能和最小的编译时间来设置B2 = / O2和B3 =   没有优化。 (?)

同样,不使用优化标志来减少编译时间。为了提高B3可执行文件的性能(速度),请使用/O2