@淘宝日照 提出了一个问题
问题:memset 1G的内存一次与memset 8个字节内存1G/8次哪个操作更快?
我的测试代码如下:
#include <iostream>
#include "stdlib.h"#include "string.h"
using namespace std;
static __inline__ unsigned long long rdtsc(void)
{
unsigned hi, lo;
__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
}
nt main(void)
{
int mem_size = 16*1024*1024;
char* ptr1 = (char*)malloc(mem_size);
memset(ptr1,0x0,mem_size);
unsigned long long now = rdtsc();
memset(ptr1,0x1,mem_size);
unsigned long long end = rdtsc();
cout<<"use time:\t"<< end - now <<endl;
free(ptr1);
char* ptr2 = (char*)malloc(mem_size);
memset(ptr2,0x0,mem_size);
now = rdtsc();
int seg = mem_size/8;
for(int i = 0;i<seg;++i)
{
memset(ptr2+i*8,0x2,8);
}
end = rdtsc();
cout<<"use time:\t"<< end - now <<endl;
free(ptr2);
}