C++ 如果我将编译器优化标志添加到应用程序中,我是否也应该使用相同的标志重新生成工具箱?

C++ 如果我将编译器优化标志添加到应用程序中,我是否也应该使用相同的标志重新生成工具箱?,c++,qt,optimization,qt4,C++,Qt,Optimization,Qt4,为了优化我的应用程序,我正在qmake项目文件中测试不同的编译器(VS2008)选项 QMAKE_CXXFLAGS += /MP /Ox /arch:SSE2 /GL 然而,我突然想到,虽然我得到了应用程序的优化二进制文件,但它所依赖的Qt-DLL并没有以同样的方式进行优化 我是否应该重新编译Qt工具包以获得相同的好处?如果是这样的话,所有的开发项目都应该优化所有的依赖关系吗?我认为重新编译Qt在这里没有意义。通常情况下,(发布模式)DLL的编译将针对大多数用途进行充分优化。通常情况下,Qt用

为了优化我的应用程序,我正在qmake项目文件中测试不同的编译器(VS2008)选项

QMAKE_CXXFLAGS += /MP /Ox /arch:SSE2 /GL
然而,我突然想到,虽然我得到了应用程序的优化二进制文件,但它所依赖的Qt-DLL并没有以同样的方式进行优化


我是否应该重新编译Qt工具包以获得相同的好处?如果是这样的话,所有的开发项目都应该优化所有的依赖关系吗?

我认为重新编译Qt在这里没有意义。通常情况下,(发布模式)DLL的编译将针对大多数用途进行充分优化。通常情况下,Qt用于GUI,如果您的应用程序因为Qt代码不够快而出现性能问题,那么还有其他原因。集中精力查找这些代码,而不是浪费时间优化只占应用程序运行时间1%的代码(当然,这里1%只是一个猜测,使用探查器来确定您是否真的想知道)


有时库有两种风格:一种是生产DLL,另一种是调试DLL。您只需确保在发布模式下构建时,适当的DLL被链接。

编译器优化只在热点(程序计数器(IP)寄存器占用大量时间的代码)中起作用。因此,如果你配置文件或随机暂停,你可以看到它会做得最好的地方,如果有的话。许多应用程序几乎所有的时间都花在对系统例程的调用上,在这种情况下,寻找可以避免的调用比编译器优化更有好处。