블로그에서 strncpy와 memcpy 중 memcpy가 더 빠르다고 본 기억이 있어서 확인차원에서 구글 codesearch를 빌려 확인
-------------------------------------------------------------------
STRNCPY
-------------------------------------------------------------------
char
*
strncpy(char *dst, const char *src, size_t
n)
{
if (n != 0) {
char *d = dst;
const char *s = src;
do {
if ((*d++ = *s++) ==
0) {
/* NUL pad the remaining n-1 bytes
*/
while (--n != 0)
*d++ = 0;
break;
}
} while (--n != 0);
}
return (dst);
}
-------------------------------------------------------------------
strcpy는 assign 연산후에 널인지를 체크하는 비교 연산이 한번더 수행되고
널체크이후 타켓에 남은 size n만큼 0으로 패딩한다.
-------------------------------------------------------------------
MEMCPY
-------------------------------------------------------------------
void *memcpy(void *_dst, const void *_src, unsigned len)
{
unsigned char *dst = _dst;
const unsigned char *src =
_src;
while(len-- > 0) {
*dst++ =
*src++;
}
return _dst;
}
-------------------------------------------------------------------
memcpy는 심플하게 len만큼 복사하고 끝...
정확히 size를 알고 있다면 strncpy보다는 memcpy가 속도상 약간의 이득이 있는것으로 보임..