c - 为什么 memcpy() 更快?

标签 c memcpy

<分区>

我很好奇为什么 memcpy() 函数比简单的手动复制更快。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main() 
{ 
    clock_t begin, end;
    double time_spent;
    int i, j;   
    char source[65536], destination[65536]; 

    begin = clock();

    for (j = 0; j<1000; j++) 
        for (i = 0; i < 65536; i++) destination[i] = source[i];
    //slower than memcpy(destination, source, 65536);

    end = clock();
    time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    printf("%Lf\n",time_spent);
    system("pause");
} 

memcpy() 的实现不是做同样的事情吗? 提前致谢。

最佳答案

memcpy() 可以合并各种其他优化,例如 SIMD。参见 this answer获取更多信息。

关于c - 为什么 memcpy() 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15724206/

相关文章:

c++ - memcpy : access violation reading location 后崩溃

c - cat 命令(没有参数)如何复制它的标准输入?

c - 在c中移动数组元素,有没有更好的选择

python - 生成一个 15Khz 音调的声音文件

c - 取消引用包含对象(数组的数组)地址的出界指针

复制结构体数组元素不起作用? C

使用 memcpy 将二维动态数组(指针)复制到静态数组

c - 选择菜单选项后再次打印菜单。 ."do while"选择选项后循环无限

c - 矩阵内结构内的数组

gcc - 在不插入对 memcpy 的调用的情况下让 GCC 进行编译