在XCode中设置异常刷新为零(FTZ)



我使用XCode在OS X Mountain Lion上用c++开发,以便在本地机器上运行。我有与非正常数字有关的性能问题,我希望设置自由贸易区标志,以便它们被刷新为零。(我已经检查了异常值确实是问题所在,在我的情况下,将它们刷新为零不会导致准确性问题。)然而,我找不到任何关于如何在XCode中实现这一点的信息。它是我可以在构建设置中更改的选项吗?或者我应该在什么地方输入一些代码?

如果我正确理解了"/usr/include/fenv.h"中的注释,

#include <fenv.h>
fesetenv(FE_DFL_DISABLE_SSE_DENORMS_ENV);

应该做你想做的。

<>之前FE_DFL_DISABLE_SSE_DENORMS_ENV指向fenv_t对象的指针,其默认浮点状态经过修改设置SSE状态/控制寄存器中的DAZ和FZ位。当使用在这种环境下,基于SSE的计算所遇到的异常(其中通常应全部为单、双精度标量浮点数所有SSE/SSE2/SSE3计算)将被视为零。非正常的计算结果也将被截断为零。之前

设置此选项减少了程序的运行时间,为什么将0.1f更改为0会使性能降低10倍?(@Mysticial在他的评论中给出的链接)从27秒到0.3秒(MacBook Pro, 2.5 GHz英特尔酷睿2双核)。