自動向量器使用
在 MSDN 文檔中,現在編譯器自動效能方面的原因是有能力的"概述"迴圈和支援 SIMD 指令,這是大多數情況下調用自動效能的話,對於所有 X 86 處理器 / X 64 現代的處理器中啟動並執行速度要快 8 倍。
與 Visual Studio 11 的預覽版本中,SIMD 指令和概述記錄是自動最佳化使用。
與 Visual Studio 2010 年 c/c + + 中下面的迴圈
1.for (int i=0;i <MAX_;i++)2. {3. a[i]=i*7.0;4. }
給出下面的組譯工具代碼用於指令和寄存器操縱的浮點數。(fld、 fmul、 fstp、 fstp、 ST (1) (0)、 ST ))
1.; 38 : for (int i=0;i <MAX_;i++)2. 3. fld QWORD PTR __real@401c0000000000004. add esp, 45. mov esi, eax6. xor eax, eax7. mov DWORD PTR _i$83361[ebp], eax8.$LN3@wmain:9. 10.; 39 : {11.; 40 : a[i]=i*7.0;12. 13. fild DWORD PTR _i$83361[ebp]14. inc eax15. mov DWORD PTR _i$83361[ebp], eax16. fmul ST(0), ST(1)17. fstp QWORD PTR [esi+eax*8-8]18. cmp eax, 100000000 ; 05f5e100H19. jl SHORT $LN3@wmain20. 21.; 41 : }
Visual Studio 11 在相同的環路迴圈中,在預設情況下,下面的代碼是在組譯工具的特定的追蹤記錄代碼實現。(movsd、 超低、 cvtdq2pd、 xmm0、 xmm1 ))
1.; 38 : for (int i=0;i <MAX_;i++)2. 3. movsd xmm1, QWORD PTR __real@401c0000000000004. add esp, 45. mov esi, eax6. xor ecx, ecx7. npad 58.$LL9@wmain:9. 10.; 39 : {11.; 40 : a[i]=i*7.0;12. 13. movd xmm0, ecx14. cvtdq2pd xmm0, xmm015. inc ecx16. mulsd xmm0, xmm117. movsd QWORD PTR [esi+ecx*8-8], xmm018. cmp ecx, 100000000 ; 05f5e100H19. jl SHORT $LL9@wmain20. 21.; 41 : }
是可能要禁用此功能嗎?
是不足以轉到該屬性的 c + + 項目, 。代碼產生。啟用增強指令集和選擇號增強說明 (/ 拱: IA32) (預設情況下,它是沒有設定,這意味著是否啟用了自動向量化角),如所示
在測試機器,未設定,對應: SSE2.
它是影響效能嗎?
是對 1 萬的迭代迴圈,看下最佳化以後的效果
沒有說明
說明
自動並行
在文檔中表示,現在已經可以利用多處理器使用 VS 11的平行處理功能,就能夠啟動多核最佳化的功能。新的指令/Qpar ,可啟用此功能。
加速 c + + 的大規模平行處理 (AGP) 支援
VS 11 將使它也能夠利用 GPGPU 中的圖形卡的可能性。換句話說,它將可以混合使用傳統代碼 CPU 和 GPU 代碼。
趕緊下載VS11體驗吧
http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200098144