慎用SEE/SEE2编译优化2007年1月4日02:09星期四 [Program]
最近在项目里面开启了VC2003的编译选项“使用增强指令集:流式处理 SIMD 扩展2(/arch:SSE2)”,Release之后在数台机器测试都没问题,结果在少数使用老CPU的机器上出问题了,运行就会崩溃。找了好久都没找到原因,因为大量测试都是好好的。偶然在一个同事家里机器上发现同样不能运行,详细问了其硬件配置,才想起可能是最近打开了一些编译优化选项的原因。
在这个新版本中新打开了“处理器优化:Pentium4及更高版本”,“Windows 应用程序优化”,“使用增强指令集:流式处理 SIMD 扩展2(/arch:SSE2)”三个优化选项。造成老CPU不能运行是最后一个选项,不能运行在不支持SEE2的CPU上。Google了一下,详细讲解VC2003编译选项的文章很少,最后还是在MSDN找到答案:
用Visual C++ 优化代码
编译器以及编译选项对于程序的执行效率有着很大的关系,不过还是要全完搞清楚利弊之后再使用。
引我为戒:)