c의 strcat()에 대해 보는중 strcat의 느린 이유에 대한 글을 읽었다.
strcat()는 기존 문자열에 최종 문자열을 붙이기 할때마다 기존 문자열의 끝을 탐색하여 뒤에 이어 붙인다.
*s1 = "abc"
*s2 = malloc(sizeof(char) * 10000);
for (int i = 0; i < 10000; i++)
{
strcat(s2, s1);
}
i = 0: "abc"
i = 1: "abcabc"
i = 5: "abcabcabcabc"
이처럼 i가 늘어남에 따라 strcat이 붙이기 할 문자열의 null까지 읽는 시간이 늘어난다.
붙이기 할때마다 끝 포인터를 저장하는 방식으로 개선을 해보자