Ste*_*rna 7 c++ pragma visual-c++ preprocessor-directive
此外,假设循环中的所有操作完全独立于其他迭代,编译器如何确定展开循环的程度.
对于MSVC,只有一个向量独立提示:http://msdn.microsoft.com/en-us/library/hh923901.aspx
#pragma loop( ivdep )
Run Code Online (Sandbox Code Playgroud)
对于许多其他编译器,如Intel/ibm,有几个用于优化循环的pragma提示:
#pragma unroll
#pragma loop count N
#pragma ivdep
Run Code Online (Sandbox Code Playgroud)
有关于展开启发式的MSVC++人员的一个主题:http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/d0b225c2-f5b0-4bb9-ac6a-4d4f61f7cb17/
VC尝试平衡执行速度和代码大小.您可以使用flags/O1或/ O2更改余额,但即使优化速度VC也会尝试节省代码大小.
基本上,展开会增加代码大小,因此在Os和O1模式下可能会受到限制(模式表)
PS:Pragma看起来像预处理器指令,但事实并非如此.它是编译器的指令,它被预处理器忽略(保留).