ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
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 yundream4byte¾¿ ÇÏÁö ¾Ê°í 1byte¾¿ º¹»çÇÒ°æ¿ì ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©Áá½À´Ï´Ù. $ ./mymemcpy Time : 1.450s 10 a yundreamlong long·Î Çüº¯È¯Çؼ 8byte¾¿ º¹»çÇÒ°æ¿ì ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©Áá½À´Ï´Ù. $ ./mymemcpy Time : 0.260s 10 a yundream |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|