@淘宝日照 提出了一个问题
问题: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);
}
本文通过测试不同方式memset操作的性能,对比了直接memset1G内存与分8字节memset1G内存的方法,使用rdtsc指令测量时间消耗,旨在探讨内存填充操作的效率。
1038

被折叠的 条评论
为什么被折叠?



