内存复制的速度居然和内存的内容相关

memcpy 和 一个字节一个字节的复制的一个区别就是,memcpy 可以复制一个cpu 的字 而 单字节复制只能复制一个字节。

但是,今天还发现了一个很重要的特点,复制的速度 还和 内存的内容相关,如果目标内存 和 当前内存的内容差不多,发现

居然复制速度要快一些。

 

这个是我在测试字符串复制的性能的时候发现的,可以参考我前面的文章。

http://www.cnblogs.com/niniwzw/archive/2009/12/23/1630777.html

前面文章中,我说的最后一种速度是 96ms, 是错误的。

测试代码如下:

    t = clock();
    strcpy1(dest, src); //我的复制方法 140ms
    printf("%d ms\n", clock() - t);
    t = clock();
    strcpy(dest, src); //系统函数的复制方法  96ms
    printf("%d ms \n", clock() - t);


    t = clock();
    strcpy(dest, src); //系统函数的复制方法  140ms
    printf("%d ms \n", clock() - t);

    t = clock();
    strcpy1(dest, src); //我的复制方法 96ms
    printf(" %d ms\n", clock() - t);

 

如果你测试一下 用memcpy,可以发现这 96ms就是memcpy复制这个内存区域的速度。

具体原因不知道是为什么。哪位高手可以告诉我。

posted @ 2009-12-28 14:11  暮夏  阅读(2214)  评论(0编辑  收藏