一起学习网 一起学习网


cpu时钟预取实例代码分享

网络编程 cpu时钟预取实例代码分享 06-21

测试下预取的效果,利用CPU始终查看效果。根据实验发现,预取地址在地址使用之前的十行左右代码处效果比较好!


#include <stdio.h>

#define MAX_LEN 1000000

static inline void prefetchnta(void *addr) //预取部分
{
__asm__("movl %0, %%eax"::"a"(addr));
__asm__(".byte 0x0f, 0x18, 0x00");
}

inline unsigned long long GetCPUTickCount()
{
unsigned long high32 = 0;
unsigned long low32 = 0;

__asm__("RDTSC" : "=a"(low32), "=d"(high32));

unsigned long long counter = high32;
counter = (counter<<32) + low32;

return counter;
}

int main(int argc, char* argv[])
{
long long start, end;
long long array[MAX_LEN];
int i;

for(i = 0; i < MAX_LEN; i++) //让cache失效
array[i]++;

start = GetCPUTickCount();
array[0]++;
end = GetCPUTickCount();
printf("don't use prefetch time:%ldn", end - start);


for(i = 0; i < MAX_LEN; i++)
array[i]++;

prefetchnta(array);
start = GetCPUTickCount();
array[0]++;
end = GetCPUTickCount();
printf("use prefetch time:%ldn", end - start);

return 0;
}

实现shell终端代码分享(可用户登录 实现系统命令)
#include"apue.h"intuserlogin(structpasswd**);intmain(){intret,i=0;longret_cwd;structpasswd*pw;charbuf[128],hostname[16],usercwd[128];char*ptmp1;do{ret=userlogin(&pw);}while(ret!=1);getchar();while(1){

用模板的方式创建守护进程代码实例
#include"wrap.h"#defineMYDOMAIN_FLAG"/tmp/.mydomain_log"voiddomain_end(){Unlink(MYDOMAIN_FLAG);}intdomain_init(){intfd;fd=open(MYDOMAIN_FLAG,O_RDWR|O_CREAT|O_EXCL|O_APPEND,0600);if(fd==-1)err_sys(errn

unix编程创建前缀固定的临时文件代码分享
参数:pathname,存储临时文件的路径文件名,需要手动free()掉。dir,临时文件的路径,如果TMPDIR环境变量不为空,则此参数被忽略,转而使用环境变量


编辑:一起学习网

标签:代码,临时文件,效果,路径,环境变量