赋值: = 和 memcpy,哪个快?
单独一个数的赋值,估计是 = 快吧?
但是如果是一个超大结构呢,哪个会比较快?
[解决办法]
记得在哪里看过 menset函数是数据量越大 优势越明显 然后 数据量少的时候 效率不如直接循环
memcpy 估计差不多
[解决办法]
反汇编看一下就知
对于常规类型变量的memcpy会优化成=一样
如
int a;
a = 0;和memcpy(&a, 0, sizeof(a));的汇编是一样的
另外memcpy在一些c库(如gcc,有按CPU字节优化过的),对结构体拷贝效率会比=高
不过有编译器使会用memcpy优化=的拷贝结构体
[解决办法]
# include <stdio.h># include <memory.h>typedef struct { int a; char b; long c; short d; struct { int a; char b; long c; short d; };} foo;int main(){ foo a, b; a = b; memcpy(&b, &a, sizeof(foo)); return 0;}