быстрый sprintf
От: maks1180  
Дата: 01.11.22 00:13
Оценка:
Нужно реализовать быстрый sprintf, соотвественно:
1) передача размера буффера отпадает, так как придеться постоянно проверять не вышли ли мы за границы буфера, что существенно снизит скорость.
2) выделить буффер максимального размера (что-бы точно влезло), тоже не всегда получится.

Придумал следующие варианты sprintf:
Первый вариант:
1) парсит шаблон, переводит числа в строки (в память выделенную в стеке), считает длину строк, запоминает какие куски шаблона нужно исключить
2) тут мы знаем сколько нужно памяти, выделяем её либо в стеке либо получаем через callback функцию
3) собираем конечную строку используя заготовки из п1

Второй вариант:
1) выделяем память в стеке по мере парсинга шаблона.
Насколько я понимаю несколько вызовов alloca дадут единый кусок памяти общим объёмом не меньше чем сумма вызовов alloca. Это так ?

Проблему возврата памяти выделенной в стеке я описал в другом топике.

Как вам такие варианты ? Может я велосипед изобретаю и уже есть реализации данной задачи ?
===============================================
(реклама, удалена модератором)
Отредактировано 01.11.2022 0:15 maks1180 . Предыдущая версия . Еще …
Отредактировано 01.11.2022 0:14 maks1180 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.