В настоящее время я объединяю строки в 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
, поэтому это может быть очень важно для производительности, если вы делаете много таких конкатенаций.
Есть ли еще более стандартный способ сделать это, выглядит лучше, чем мое решение?