Какой протокол легче парсить?

jenya7
Дата: 22.11.2017 16:33:51
В кои то веки мне дали выбор - выбери документ для парсинга а мы его заполним данными.
Инструмент для парсинга - С.
И я задумался какой документ быстрее распарсить? До сих пор я парсил в основном три формата - ini, xml, comma separated
но я никогда не задумывался какой из них лучше парситься по скорости (в данном случае определяющий фактор - скорость).
Может кто то проводил такой анализ?

P.S Подозреваю что вопрос идиотский. Не обижусь если модератор удалит его.
dbpatch
Дата: 22.11.2017 16:44:05
jenya7
В кои то веки мне дали выбор - выбери документ для парсинга а мы его заполним данными.
Инструмент для парсинга - С.
И я задумался какой документ быстрее распарсить? До сих пор я парсил в основном три формата - ini, xml, comma separated
но я никогда не задумывался какой из них лучше парситься по скорости (в данном случае определяющий фактор - скорость).
Может кто то проводил такой анализ?

P.S Подозреваю что вопрос идиотский. Не обижусь если модератор удалит его.


XML очень тяжелый формат, даже сверхскоростные библиотеки типа faxpp, при изучении исходников - приводят в ужас.
JSON в этом плане намного легче, масса удобных и быстрых минималистических библиотек - jsmn к примеру

в остальном - CSV натужен, там нужно корректно отрабатывать всякие экранирующие символы.

а вот INI просто как двери, по сути первые байты альфацифровые, символ =, а после - чистый raw, до перевода строки, никаких экранирований и прочих ограничений.

если нужно в значениях и символ перевода строки передавать - не беда, кодируем значения в hex формате, декодер HEX-а табличный можно найти готовый или написать за 15 минут свой. или пишем обработку экранирования - два подряд перевода строки считаются значением

INI - будет реально ультрабыстро, велосипедостроение минимально
jenya7
Дата: 22.11.2017 17:11:05
dbpatch
jenya7
В кои то веки мне дали выбор - выбери документ для парсинга а мы его заполним данными.
Инструмент для парсинга - С.
И я задумался какой документ быстрее распарсить? До сих пор я парсил в основном три формата - ini, xml, comma separated
но я никогда не задумывался какой из них лучше парситься по скорости (в данном случае определяющий фактор - скорость).
Может кто то проводил такой анализ?

P.S Подозреваю что вопрос идиотский. Не обижусь если модератор удалит его.


XML очень тяжелый формат, даже сверхскоростные библиотеки типа faxpp, при изучении исходников - приводят в ужас.
JSON в этом плане намного легче, масса удобных и быстрых минималистических библиотек - jsmn к примеру

в остальном - CSV натужен, там нужно корректно отрабатывать всякие экранирующие символы.

а вот INI просто как двери, по сути первые байты альфацифровые, символ =, а после - чистый raw, до перевода строки, никаких экранирований и прочих ограничений.

если нужно в значениях и символ перевода строки передавать - не беда, кодируем значения в hex формате, декодер HEX-а табличный можно найти готовый или написать за 15 минут свой. или пишем обработку экранирования - два подряд перевода строки считаются значением

INI - будет реально ультрабыстро, велосипедостроение минимально

понял. спасибо.
Lumix
Дата: 22.11.2017 17:59:26
jenya7
(в данном случае определяющий фактор - скорость).
Может кто то проводил такой анализ?

P.S Подозреваю что вопрос идиотский.


Вообще-то когда на первом месте стоит скорость и предоставлена свобода в выборе формата, то все создают свой собственный формат файлов, исходя из того, как в дальнейшем будет использоваться информация из файла.

Еще из опыта могу сказать, что в 99% случаев вопрос скорости и формата файлов - это лишь паранойя программиста, а на самом деле это не так уж и важно, то есть реальный выигрыш может быть в 5 мс прироста скорости. Неужели 5 мс действительно критично? При обработке спутниковых координат для постановки целей на поле боя - это критично, но обычных прикладных задачах, часто +/- 100 мс часто роли вообще не играют.
jenya7
Дата: 22.11.2017 18:35:27
Lumix
jenya7
(в данном случае определяющий фактор - скорость).
Может кто то проводил такой анализ?

P.S Подозреваю что вопрос идиотский.


Вообще-то когда на первом месте стоит скорость и предоставлена свобода в выборе формата, то все создают свой собственный формат файлов, исходя из того, как в дальнейшем будет использоваться информация из файла.

Еще из опыта могу сказать, что в 99% случаев вопрос скорости и формата файлов - это лишь паранойя программиста, а на самом деле это не так уж и важно, то есть реальный выигрыш может быть в 5 мс прироста скорости. Неужели 5 мс действительно критично? При обработке спутниковых координат для постановки целей на поле боя - это критично, но обычных прикладных задачах, часто +/- 100 мс часто роли вообще не играют.

ну, ну свой формат - наглеть мне не разрешали. )) должен быть какой то стандартный формат. а с целью - вы прямо в яблочко ))
White Owl
Дата: 22.11.2017 18:37:32
jenya7
В кои то веки мне дали выбор - выбери документ для парсинга а мы его заполним данными.
Инструмент для парсинга - С.
И я задумался какой документ быстрее распарсить? До сих пор я парсил в основном три формата - ini, xml, comma separated
но я никогда не задумывался какой из них лучше парситься по скорости (в данном случае определяющий фактор - скорость).
Может кто то проводил такой анализ?

P.S Подозреваю что вопрос идиотский. Не обижусь если модератор удалит его.
Зависит от структуры данных.
Быстрее всего какой-нибудь собственный бинарный формат, чтобы можно было просто кусок памяти сбросить в файл и наоборот - прочитал в память и без какой-либо расшифровки имеешь готовые данные для работы.

А если надо писать в файл который будет хотя бы просматриваться человеком... То смотри какие у тебя данные.
Если у тебя плоский двумерный массив, то быстрее CSV не будет ничего.
Если у тебя данные организованы в дерево, то бери XML или JSON, смотря по тому какую библиотеку найдешь более удобной (или для какого формата парсер писать покажется легче).
ini - можно конечно, но только для маленьких объемов данных. Учти что большинство библиотек работающих с ini форматом имеют жуткие ограничения и для больших данных тебе придется писать собственный парсер (или резать данные).
LR
Дата: 22.11.2017 18:39:58
Lumix
Вообще-то когда на первом месте стоит скорость и предоставлена свобода в выборе формата, то все создают свой собственный формат файлов, исходя из того, как в дальнейшем будет использоваться информация из файла.

три плюса, обговорите с заказчиком дальносрочную перспективу...
jenya7
Дата: 23.11.2017 14:01:07
кстати тут возник еще один вопрос - строка прочитанная из файла - это всегда строка? нужно делать atoi() чтоб получить число?
Dimitry Sibiryakov
Дата: 23.11.2017 14:32:23
По-моему, проще и быстрее всего парсится XDR.
jenya7
Дата: 23.11.2017 14:52:22
Dimitry Sibiryakov
По-моему, проще и быстрее всего парсится XDR.

автор
File created using the XML-Data Reduced (XDR) schema definition language; contains a data definition that describes the data in one or more related XML files; used by XML parsers to understand and parse XML data.