В настоящее время я объединяю строки в c, используя функцию strcat() из библиотеки string.h.
Я подумал об этом, и я пришел к выводу, что это должна быть очень дорогая функция, так как до того, как она начнет конкатенацию, она должна перебирать массив char, пока не найдет '\0' char.
Например, если я конкатенирую строку "horses" 1000 раз, используя strcat(), мне придется заплатить
(1 + 2 + 3 + ... + 1000) * strlen("horses") = (1000*1001)/2 * 6 = 3003000
Я думал о нестандартном способе, сохраняя целое число с длиной строки, а затем отправляя в strcat() указатель на конец строки:
strcat(dest + dest_len, "string");
В этом случае я заплачу только 1000 * strlen("horses") = 1000 * 6 = 6000.
6000 намного меньше, чем 3003000, поэтому это может быть очень важно для производительности, если вы делаете много таких конкатенаций.
Есть ли еще более стандартный способ сделать это, выглядит лучше, чем мое решение?