memcpyの威力
memcpy , 。 c/c++ memcpy , 。 int buffer ,
example:
uint8_t *buffer=new uint8_t[1024];int sendLength=100;*(int*)buffer=sendLength;
次の場合memcpyは威力を示します.
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#include<time.h>
#define DUMBCOPY for(unsigned int i=0;i<65535;i++) \
destination[i]=source[i];
#define MEMERYCOPY memcpy(destination,source,65535);
int _tmain(int argc, _TCHAR* argv[])
{
clock_t begin, end;
begin = clock();
char source[65536],destination[65536];
int j;
for(int j=0;j<6553600;j++);
DUMBCOPY //MEMERYCOPY
end = clock();
printf("time==%lf",double(end-begin));
return 0;
}
DUMCOPYを採用する効率はMEMERYCOPYの効率よりも少し調べなければならない.DUMCOPYというsourceとdestinationに対して同じcache行を使用すると、メモリへの参照がヒットするたびにCPUの効率が大幅に低下する.ライブラリ関数memcpyは、まず1つのcache行を読み出して書き込み、同じcache行を使用することはありません.
毎回メモリが発生します.