一级缓存与二级缓存的差距能有这么大?
看看下面两段目标码。功能相同,代码也非常相似。但是在E7500上的执行时间,第二个竟然是第一个的5-6倍!
第一段:
00FB15A0 mov ebx,dword ptr [ebp-41Ch] do { sum = *ptr++;00FB15A6 mov eax,dword ptr [esi] tmp[cnt[(sum >> bit) & 0xFF]++] = sum;00FB15A8 mov ecx,ebx 00FB15AA mov ebx,dword ptr [ebp-418h] 00FB15B0 mov edx,eax 00FB15B2 sar edx,cl 00FB15B4 add esi,4 00FB15B7 and edx,0FFh 00FB15BD lea ecx,[ebp+edx*4-40Ch] 00FB15C4 mov edx,dword ptr [ecx] 00FB15C6 mov dword ptr [ebx+edx*4],eax 00FB15C9 inc edx } while(--idx != 0);00FB15CA dec edi 00FB15CB mov dword ptr [ecx],edx 00FB15CD jne rsort<int>+150h (0FB15A0h) do { sum = *ptr++;001E1528 mov eax,dword ptr [esi] tmp[cnt[(sum >> bit) & 0xFFFF]++] = sum;001E152A mov ecx,ebx 001E152C mov edx,eax 001E152E sar edx,cl 001E1530 add esi,4 001E1533 and edx,0FFFFh 001E1539 lea ecx,[ebp+edx*4-40008h] 001E1540 mov edx,dword ptr [ecx] 001E1542 mov dword ptr temp (17F5B778h)[edx*4],eax 001E1549 inc edx } while(--idx != 0);001E154A dec edi 001E154B mov dword ptr [ecx],edx 001E154D jne rsort3<int>+128h (1E1528h)