我想知道如何计算 C++ 内联汇编程序的执行时间?我的问题是 Tickcounts 的差异为 0。
这是我的cpp代码:
const int N = 100000;
short x[4*N];
short a[4*N];
for (int j=0;j<4*N;j++) {
x[j] = rand() % 1000;
a[j] = rand() % 5000;
}
DWORD dwAStart = GetTickCount();
__asm {
xor eax,eax
mov ecx,N
xor esi,esi
一:
emms
movq mm1,qword ptr x[esi]
movq mm2,mm1
punpcklwd mm1,mm6
punpckhwd mm2,mm6
movq mm0,qword ptr a[esi]
movq mm3,mm0
punpcklwd mm0,mm6
punpckhwd mm3,mm6
pmullw mm0,mm1
paddsw mm0,mm3
add esi , 8
loop a1
};
DWORD dwAInterval = GetTickCount() - dwAStart;
printf("Operation is completed through %d ms (Assembler)!\n", (int)dwAInterval);