php memcpy,整型memcpy与直接指针取值

网络编程经常要做字节序转换,避免不了整型拷贝

是直接用指针类型转换,还是memcpy?

实测下来,release下差不多,debug下memcpy效率要差,毕竟是函数调用,release下应该内联了

void MemcpyTest()

{

int s = 10000000;

char buf[1024];

char * bufx = buf +9;

uint64_t x = -1;

memcpy(buf, &x, sizeof x);

memcpy(bufx, &x, sizeof x);

uint64_t t1= GetNanoTick();

for(int i=0; i

{

uint64_t tmp = *(uint64_t*)buf;

if(tmp != -1)

{

printf("MemTestFail \n");

}

}

uint64_t t2 = GetNanoTick();

for(int i=0; i

{

uint64_t tmp;

memcpy(&tmp, buf, sizeof tmp);

if(tmp != -1)

{

printf("MemTestFail \n");

}

}

uint64_t t3 = GetNanoTick();

for(int i=0; i

{

uint64_t tmp = *(uint64_t*)bufx;

if(tmp != -1)

{

printf("MemsetTestFail \n");

}

}

uint64_t t4 = GetNanoTick();

for(int i=0; i

{

uint64_t tmp;

memcpy(&tmp, bufx, sizeof tmp);

if(tmp != -1)

{

printf("MemsetTestFail \n");

}

}

uint64_t t5 = GetNanoTick();

printf("%lld\n%lld\n%lld\n%lld \n", t2-t1, t3-t2, t4-t3, t5-t4);

}

运行环境win10+vs2008

release结果

bVvoF5

debug结果

bVvoF7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值