读书人

赋值: = 跟 memcpy哪个快

发布时间: 2012-10-15 09:45:24 作者: rapoo

赋值: = 和 memcpy,哪个快?
单独一个数的赋值,估计是 = 快吧?
但是如果是一个超大结构呢,哪个会比较快?

[解决办法]
记得在哪里看过 menset函数是数据量越大 优势越明显 然后 数据量少的时候 效率不如直接循环
memcpy 估计差不多
[解决办法]
反汇编看一下就知
对于常规类型变量的memcpy会优化成=一样

int a;
a = 0;和memcpy(&a, 0, sizeof(a));的汇编是一样的
另外memcpy在一些c库(如gcc,有按CPU字节优化过的),对结构体拷贝效率会比=高
不过有编译器使会用memcpy优化=的拷贝结构体
[解决办法]

C/C++ code
# 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;} 

读书人网 >C语言

热点推荐