Concatenando strings em C, qual método é mais eficiente?

Eu me deparei com esses dois métodos para concatenar strings:

Parte comum:

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

Método 1:

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

Método 2:

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

Em ambos os casos, o conteúdo deboth seria"First Second".

Eu gostaria de saber qual deles é mais eficiente (eu tenho que executar várias operações de concatenação), ou se você conhece uma maneira melhor de fazê-lo.

questionAnswers(10)

yourAnswerToTheQuestion