[an error occurred while processing this directive]
[an error occurred while processing this directive]warning C4103: ....cpp' : used #pragma pack to change alignmentVisualStudioでは、頻繁にincludeされるヘッダを予めプリコンパイルしておく機能が付いているらしい。このために用いられるのがstdafx.hで、共通してインクルードするファイルはここに書いて、しかも全てのcppソースはstdafx.hをインクルードしないといけないらしい。
#include "stdafx.h"を全てのcppファイルの先頭に書いて解決。
error C2475: pointer-to-member の形成には明示的なアドレス演算子 ('&') および限定名の使用が必要です。クラスのメンバ関数を呼び出すときに、()を忘れている。
/O3 /QxP /Qparallelを指定します。/Qparallelがスレッド化、/QxPがベクトル化(MMXとかSSEとか?)です。
- | Debug | Release | 並列化 |
---|---|---|---|
ICC | 2.6 | 0.6 | 0.1 |
VC++ (CL) | 2.6 | 0.4 |
#include "windows.h" #define N 100000 int _tmain(int argc, _TCHAR* argv[]){ int i, j,k; int A[N]; int C[N]; LARGE_INTEGER freq, begin, end; QueryPerformanceFrequency( &freq ); QueryPerformanceCounter( &begin ); for(i = 0; i < N; i++) A[i] = i; for(k = 0; k < 10; k++){ for(i = 0; i < N; i++) for(j = 0; j < N; j++) C[i] += A[i] + A[j]; QueryPerformanceCounter( &end ); printf( "%f\n", ( double )( end.QuadPart - begin.QuadPart ) / freq.QuadPart ); }