twdragon
@twdragon
Qt/C++ разработчик, ученый, TeX-программист

Как быстро конструировать большой QByteArray из частей других QByteArray?

Возникла следующая задача: приходят данные в виде пакетов с заголовками, обернутые в QByteArray. Требуется очень быстро (3072 операции в секунду) извлекать из этих пакетов сырые данные, очищенные от заголовков, и потом забрасывать их в один большой QByteArray для последующей обработки. Проблема в накладных расходах: постоянное копирование и перераспределение памяти при вызовах append() съедает время, и данные начинают теряться. При этом нельзя выходить за пределы Qt из-за требования кроссплатформенности.
Можете подсказать способ победить проблему?
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
vt4a2h
@vt4a2h
Software ingeneer (C++/Qt/boost)
Я вижу несколько вариантов:
1) Заранее выделять/резервировать память в результирующем контейнере (resize()/reserve()). Можно просто где-то много памяти выделить и как буфер её использовать.
2) Использовать другую структуру данных для результата. Но тут должен быть баланс, возможно вы лишитесь преимущества кэш-линии, но быть может это будет не критично.
3) Можно просто в какой-то структуре хранить объекты, а потом собирать, когда достаточно накопится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
HARMAN Connected Services Нижний Новгород
от 60 000 до 120 000 руб.
Soft Media Int. Пенза
от 125 000 до 225 000 руб.
ООО ЭНЕРГИЯ Новосибирск
от 60 000 до 90 000 руб.