「memory copy」の編集履歴(バックアップ)一覧はこちら
「memory copy」(2008/04/07 (月) 01:17:05) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*目的
構造体の変数を代入とmemcpyでどちらが早か調べる
*実行環境
今回のテストは環境に依存すると思うので参考までにspecを載せておく
AMD Athlon(tm) 64 Processor 3200+
DDR 515992kB
*コード
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
struct mydata {
char buf[68];
};
long
gettimeofday_sec()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_usec;
}
int
main()
{
struct mydata d1;
struct mydata d2;
long start;
start = gettimeofday_sec();
d2 = d1;
printf("d2 = d1, %dusec\n", (gettimeofday_sec() - start));
start = gettimeofday_sec();
memcpy(&d2, &d1, sizeof(struct mydata));
printf("memcpy, %dusec\n", (gettimeofday_sec() - start));
return (0);
}
*実行
$ gcc -o memtest memtest.c -g
$ ./memtest
d2 = d1, 5usec
memcpy, 2usec
どうやら私の環境では64byteぐらいからmemcpyの方が早くなるようである