滴水逆向联盟

标题: Visual Studio 11开发指南(18)C++11更新-自动矢量器使用 [打印本页]

作者: 大灰狼    时间: 2014-10-23 08:12
标题: Visual Studio 11开发指南(18)C++11更新-自动矢量器使用
自动矢量器使用

在 MSDN 文档中,现在编译器自动性能方面的原因是有能力的"概述"循环和支持 SIMD 指令,这是大多数情况下调用自动性能的话,对于所有 X 86 处理器 / X 64 现代的处理器中运行的速度要快 8 倍

与 Visual Studio 11 的预览版本中,SIMD 指令和概述记录是自动优化使用。

与 Visual Studio 2010 年 c/c + + 中下面的循环


[cpp] view plaincopy




给出下面的汇编程序代码用于指令和寄存器操纵的浮点数。(fld、 fmul、 fstp、 fstp、 ST (1) (0)、 ST ))

[cpp] view plaincopy




Visual Studio 11 在相同的环路循环中,在默认情况下,下面的代码是在汇编程序的特定的跟踪记录代码实现。(movsd、 超低、 cvtdq2pd、 xmm0、 xmm1 ))



[cpp] view plaincopy


  • 1.; 38   :     for (int i=0;i <MAX_;i++)  
  • 2.   
  • 3.    movsd    xmm1, QWORD PTR __real@401c000000000000  
  • 4.    add    esp, 4  
  • 5.    mov    esi, eax  
  • 6.    xor    ecx, ecx  
  • 7.    npad    5  
  • 8.$LL9@wmain:  
  • 9.   
  • 10.; 39   :     {  
  • 11.; 40   :         a=i*7.0;  
  • 12.   
  • 13.    movd    xmm0, ecx  
  • 14.    cvtdq2pd xmm0, xmm0  
  • 15.    inc    ecx  
  • 16.    mulsd    xmm0, xmm1  
  • 17.    movsd    QWORD PTR [esi+ecx*8-8], xmm0  
  • 18.    cmp    ecx, 100000000                ; 05f5e100H  
  • 19.    jl    SHORT $LL9@wmain  
  • 20.   
  • 21.; 41   :     }  



是可能要禁用此功能吗?

是不足以转到该属性的 c + + 项目, 。代码生成。启用增强指令集和选择号增强说明 (/ 拱: IA32) (默认情况下,它是没有设置,这意味着是否启用了自动矢量化角),如下图所示

在测试机器,未设置,对应: SSE2.

它是影响性能吗?

是对 1 万的迭代循环,看下优化以后的效果

没有说明

说明


自动并行

在文档中表示,现在已经可以利用多处理器使用 VS 11的并行处理功能,就能够启动多核优化的功能。新的指令/Qpar ,可启用此功能。


加速 c + + 的大规模并行处理 (AGP) 支持

VS 11 将使它也能够利用 GPGPU 中的图形卡的可能性。换句话说,它将可以混合使用传统代码 CPU 和 GPU 代码。







欢迎光临 滴水逆向联盟 (http://www.dtdebug.com/) Powered by Discuz! X3.2