24,854
社区成员
发帖
与我相关
我的任务
分享
void fun() {
int size_ = 20000;
clock_t start, end;
int nc = 0, na = 0;
float* sumCPP = new float[size_ ];
// sumCPP[na] *= sumCPP[na] 使用movups指令
start = clock();
for (nc = 0; nc < size_; nc++)
for (na = 0; na < size_; na++)
sumCPP[na] *= sumCPP[na]; // movups
end = clock();
printf(" %d,%d,\n",
nc, // 若此处为nc,上面sumCPP[na] *= sumCPP[na]花费时间 52, 使用movups指令
(end - start));
// sumCPP[na] *= sumCPP[na] 使用mulss指令
start = clock();
for (nc = 0; nc < size_; nc++)
for (na = 0; na < size_; na++)
sumCPP[na] *= sumCPP[na]; // mulss
end = clock();
printf(" %d,%d,\n",
0, // 若此处为0,上面sumCPP[na] *= sumCPP[na]花费时间 713, 使用mulss指令
(end - start));
delete[] sumCPP;
}
fun();
01117CF1 push 13880h
01117CF6 call dword ptr [__imp_operator new[] (011272C8h)]
fun();
01117CFC add esp,4
01117CFF mov esi,eax
01117D01 mov dword ptr [ebp-1FA88h],esi
01117D07 call dword ptr [__imp__clock (011272A8h)]
01117D0D lea edi,[esi+20h]
01117D10 mov dword ptr [ebp-14h],eax
01117D13 mov esi,4E20h
01117D18 nop dword ptr [eax+eax]
01117D20 mov ecx,edi
01117D22 mov edx,4E2h
01117D27 nop word ptr [eax+eax]
01117D30 lea ecx,[ecx+40h]
01117D33 movups xmm0,xmmword ptr [ecx-60h] // 第一个 sumCPP[na] *= sumCPP[na];使用 movups
01117D37 mulps xmm0,xmm0
01117D3A movups xmmword ptr [ecx-60h],xmm0
01117D3E movups xmm0,xmmword ptr [ecx-50h]
01117D42 mulps xmm0,xmm0
01117D45 movups xmmword ptr [ecx-50h],xmm0
01117D49 movups xmm0,xmmword ptr [ecx-40h]
01117D4D mulps xmm0,xmm0
01117D50 movups xmmword ptr [ecx-40h],xmm0
01117D54 movups xmm0,xmmword ptr [ecx-30h]
01117D58 mulps xmm0,xmm0
01117D5B movups xmmword ptr [ecx-30h],xmm0
01117D5F sub edx,1
01117D62 jne main+70h (01117D30h)
01117D64 sub esi,1
01117D67 jne main+60h (01117D20h)
01117D69 mov edi,dword ptr [__imp__clock (011272A8h)]
01117D6F call edi
01117D71 sub eax,dword ptr [ebp-14h]
01117D74 push eax
01117D75 push 4E20h
01117D7A push offset string " %d,%d,\n" (0112A5A8h)
01117D7F call printf (010D1C60h)
01117D84 add esp,0Ch
01117D87 call edi
01117D89 mov ecx,dword ptr [ebp-1FA88h]
01117D8F mov esi,4E20h
01117D94 mov dword ptr [ebp-14h],eax
01117D97 nop word ptr [eax+eax]
01117DA0 mov edx,7D0h
01117DA5 nop word ptr [eax+eax]
01117DB0 movss xmm0,dword ptr [ecx]
01117DB4 mulss xmm0,xmm0 // 第二个 sumCPP[na] *= sumCPP[na];使用 mulss
01117DB8 mulss xmm0,xmm0
01117DBC mulss xmm0,xmm0
01117DC0 mulss xmm0,xmm0
01117DC4 mulss xmm0,xmm0
01117DC8 mulss xmm0,xmm0
01117DCC mulss xmm0,xmm0
01117DD0 mulss xmm0,xmm0
01117DD4 mulss xmm0,xmm0
01117DD8 mulss xmm0,xmm0
01117DDC movss dword ptr [ecx],xmm0
01117DE0 sub edx,1
01117DE3 jne main+0F0h (01117DB0h)
01117DE5 add ecx,4
01117DE8 sub esi,1
01117DEB jne main+0E0h (01117DA0h)
01117DED call edi
01117DEF sub eax,dword ptr [ebp-14h]
01117DF2 push eax
01117DF3 push esi
01117DF4 push offset string " %d,%d,\n" (0112A5A8h)
01117DF9 call printf (010D1C60h)
01117DFE push dword ptr [ebp-1FA88h]
01117E04 call dword ptr [__imp_operator delete[] (011272CCh)]
01117E0A add esp,10h