Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

void *로 받은다음 size만큼 루프를 돌면서 src에서 dst로 복사하도록 했습니다. 1byte가 아닌 4byte씩 복사하도록 했습니다.
#include <stdio.h>
#include <string.h>
#include <time.h>

mymemcpy(void *dst, void *src, unsigned int size)
{
  int i;
  char *a = (char *)src;
  int pad = size%sizeof(int);
  for(i = 0; i < size/sizeof(int); i++)
  {
    *(int *)dst = *(int *)src;
    dst +=4;
    src +=4;
  }
  for (i = 0; i < pad; i++)
  {
    *(char *)dst = *(char *)src;
    dst++;
    src++;
  }
}

struct data
{
  int age;
  char name[24];
  char a;
};
int main(int argc, char **argv)
{
  int i = 0;
  struct data src, dst;
  clock_t stime, etime;

  memset((void *)&dst, 0x00, sizeof(src));
  src.age = 10;
  src.a = 'a';
  sprintf(src.name, "%s", "yundream");

  stime = clock();
  for (i = 0; i < 10000000; i++)
  {
    mymemcpy((void *)&dst, (void *)&src, sizeof(src));
  }
  etime = clock();
  printf("Time : %.3fs\n",(double)(etime - stime)/CLOCKS_PER_SEC);
  printf("%d\n", dst.age);
  printf("%c\n", dst.a);
  printf("%s\n", dst.name);
}
다음은 테스트 결과 입니다.
$ ./mymemcpy
Time : 0.460s
10
a
yundream
4byte씩 하지 않고 1byte씩 복사할경우 다음과 같은 결과를 보여줬습니다.
$ ./mymemcpy
Time : 1.450s
10
a
yundream
long long로 형변환해서 8byte씩 복사할경우 다음과 같은 결과를 보여줬습니다.
$ ./mymemcpy
Time : 0.260s
10
a
yundream