Информация об изменениях

Сообщение Re[2]: быстрый sprintf от 01.11.2022 17:58

Изменено 01.11.2022 18:01 maks1180

Re[2]: быстрый sprintf
_>Для C реализовать функцию
_>
_>int format_string(const char* format, va_list args, void (*write)(void* ctx),const char* chunk,int chunk_size), void *ctx);
_>

_>где write(ctx,chunk,chunk_size) записывает фрагмент данных (или просто складывает chunk_size в зависимости от потребностей).
_>И на её основе сделать все остальные варианты.

Тут будет выделяться буффер ограниченного размера, когда конечный размер неизвестен, поэтому возвращаемся к началу топика
"передача размера буффера отпадает, так как придеться постоянно проверять не вышли ли мы за границы буфера, что существенно снизит скорость."
Re[2]: быстрый sprintf
_>Для C реализовать функцию
_>
_>int format_string(const char* format, va_list args, void (*write)(void* ctx),const char* chunk,int chunk_size), void *ctx);
_>

_>где write(ctx,chunk,chunk_size) записывает фрагмент данных (или просто складывает chunk_size в зависимости от потребностей).
_>И на её основе сделать все остальные варианты.

Тут будет выделяться буффер ограниченного размера, когда конечный размер неизвестен, поэтому возвращаемся к началу топика
"передача размера буффера отпадает, так как придеться постоянно проверять не вышли ли мы за границы буфера, что существенно снизит скорость."

Т.е. выделили мы первый блок Х байт, заполняем его, мы же должны проверять не вышли ли мы за его границы. Это требует проверки после записи каждого байта.