memory copy


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

目的

構造体の変数を代入と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の方が早くなるようである

ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。