2010-06-28 4 views
1

Приветствия,Сериализация/десериализация по сравнению с буфером необработанных данных

Я работаю над распределенной системой pub-sub, которая должна иметь минимальную задержку. Теперь мне приходится выбирать между использованием сериализации/десериализации и буфера исходных данных. Я предпочитаю использовать необработанные данные, поскольку накладных расходов практически нет, что обеспечивает низкую задержку. Но мой коллега утверждает, что я должен использовать маршалинг, поскольку парсер будет менее сложным и более сложным. Я заявил о своей обеспокоенности в отношении задержки, но он сказал, что в долгосрочной перспективе это будет стоить того, и даже устройства FPGA ускорятся.

Ваше мнение по этому вопросу?

TIA!

+0

Какая у вас платформа? Возможности вашей платформы, в частности, будут диктовать ответ. –

+0

Платформа GCC на Linux. – user358789

ответ

0

Использование подхода «исходные данные», если жестко закодировано на одном языке, для одной платформы имеет несколько проблем при попытке написать код на другой платформе на другом языке (или иногда даже на одном языке/платформе для другого компилятор, если ваши поля не имеют естественного выравнивания).

Я рекомендую использовать IDL для описания ваших форматов сообщений. Если вы выбираете тот, который сводится к «необработанным данным» на выбранном вами языке, тогда сгенерированный код для доступа к полям сообщений для этого языка не будет делать ничего, кроме переменных доступа в структуре, которая является памятью, наложенной на ваш буфер данных, но он по-прежнему представляет метаданные на платформе и языке нейтральным способом, поэтому синтаксические анализаторы могут создавать более сложные коды для других платформ.

Недостатком выбора чего-либо, сводящегося к наложению структуры C, является то, что он не обрабатывает необязательные поля и не обрабатывает массивы переменной длины и не может обрабатывать обратные совместимые расширения в будущем (если только вы просто привяжите их к концу структуры). Я бы посоветовал вам прочитать о google's protocol buffers, если вы еще этого не сделали.

+0

спасибо за ваш ответ. Я на самом деле читать эту интересную статью: « http://mnb.ociweb.com/mnb/MiddlewareNewsBrief-201004.html » мне дополнительное время ожидания введен буфер протокола Google и повышающего сериализации довольно большой, особенно последний. Вот почему я предпочитал «сырые данные» над другим, но вы определенно правы в отношении межплатформенных и многоязычных проблем. – user358789

Смежные вопросы