Łączenie ciągów w C, która metoda jest bardziej wydajna?

Natknąłem się na te dwie metody łączenia łańcuchów:

Wspólna część:

char* first= "First";
char* second = "Second";
char* both = malloc(strlen(first) + strlen(second) + 2);

Metoda 1:

strcpy(both, first);
strcat(both, " ");       // or space could have been part of one of the strings
strcat(both, second);

Metoda 2:

sprintf(both, "%s %s", first, second);

W obu przypadkach treśćboth byłoby"First Second".

Chciałbym wiedzieć, który z nich jest bardziej wydajny (muszę wykonać kilka operacji łączenia) lub czy znasz lepszy sposób na to.

questionAnswers(10)

yourAnswerToTheQuestion