Придумал, как передавать данные в формате XML без потери эффективности из-за текстового представления. Решение напрашивается само собой - преобразовать (по сути скомпилировать) данные в бинарный вид, оставив в текстовом виде только схему (тоесть из оригинального вида все данные удаляются). При этом передача состоит из двух блоков - заголовок и содержание. Принимающий может проводить декомпиляцию до оригинального вида без искажений. Процесс передачи на примере: Оригинал (текст): <VideoData>01,02,03,04,05<VideoData> <AudioData>06,07,08,09,00<AudioData>
Скомпилированный заголовок (текст): <VideoData>[5]<VideoData> <AudioData>[5]<AudioData>
Теперь [5] означает размер байт в бинарном блоке.
Бинарный блок (10 байт): 01,02,03,04,05,06,07,08,09,00
Получающая сторона может использовать бинарные данные по прямому назначению. Тоесть декомпиляция в символьное представление может и не понадобиться, и получается экономия времени на интерпретацию данных.
Принцип тот же, что и компиляция структур в языке Си с "отладочной информацией", дающей символьное представление о бинарной информации. Раньше я думал, что в заголовке нужно хранить указатели смещения для бинарного блока, но оказалось достаточным только размеров данных, а смещения вычисляются путём последовательного сложения размеров предыдущих данных.
|