![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
как возможно некоторые помнят, недавно я обсуждал реализацию библиотеки сериализации, т.к. от бустовской пришлось отказаться в виду ее непригодности по ряду причин
![]() скажите, нужна ли вообще бинарная сериализация? ведь с ней куча проблем... в каких к примеру случаях без не никак? почему не использовать только текстовую сериализацию? спасибо. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Имхо, любые данные можно преобразовать в текстовый вид, так что не думаю что может быть какой-то случай, что без бинарной - никак. Просто бинарную (теоретически) можно сделать более эффективной. (меньшее кол-во преобразовний, меньше размер выходного файла и т.д.) Так-что если произодительность сериализации не имеет решающего значения, то текстовой вполне можно обойтись. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Одна из которых, что далеко не всегда бинарные данные меньше текстовых. Например, число double, равное 3,14 в тесте занимает 4 байта, а в бинаре - 8, все целые числа меньше 1000 занимают меньше места, чем int (а таких немало - всякие индексы и т.п.) Плюс к тому при больших объёмах текстовая информация гораздо лучше жмётся. У меня так в одном большом проекте данные перегоняются по сети - с одной стороны сериализуются в XML и сжимаются zip-ом, а на другой стороне - разжимаются и десериализуются. Объём получился раза в 2 меньше. Время, правда, тратится на сжимание/разжимание, но, т.к. компы там быстрые, а сеть медленная (2 МБита), то овчинка выделки стоит. А про то, что для отладки текстовый формат удобнее, думаю и говорить не стоит. В общем в каждом конкретном случае нужно пробовать (ну или прикидывать, если получится) оба варианта и выбирать оптимальный. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
суть вопроса заключалась и в том, что возможно есть ситуации когда бинарная сериализация не заменима, но я об этом не знаю.
у бинарной сериализации один существенный плюс - она очень быстрая. текстовая сериализация почти в 6 раз медленней. нужно искать способ избавится от стандартных потоков... |
|||
|
||||
volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
|
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
volatile, вашу позицию я понял
![]() |
|||
|
||||
afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: 1 Всего: 4 |
Ну да, скорость, объем данных. На принтерах или бюджетных роутерах это может быть существенно. Если объект планируется шифровать, бинарные данные также предпочтительнее (если вы - параноик, террорист или работаете в гос. структуре).
Если скорость не очень важна (а железо сейчас дешевое), преобразовать текстовые данные в бинарные можно с помощью алгоритма сжатия (LZW вполне сойдет). Тут плюс в том, что бинарные данные будет легко преобразовать в текстовые, а текстовые данные хорошо парсятся скриптами или библиотеками (XML). По-моему, это хороший компромисс. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
любопытно. спасибо ![]() |
|||
|
||||
phprus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
Есть: К примеру в моих задачах передавать снимаемые с датчиков данные (650+Мбит/с) применяется ручная бинарная сериализация (правда она имеет достаточно простую структуру, набор блоков разной длины без хранения информации о типе данных в блоке). Текстовая сериализация здесь не подошла бы по скорости. Да и алгоритмов сжатия, способных переварить в среднем 650+Мбит/с на имеющемся у нас оборудовании я не встречал. Только до определенного предела, потом стоимость сопровождения оборудования начинает быстро расти. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
В общем да, дело не в незаменимости, а в скорости и объеме. Чтение текстовых данных - это всегда в том или ином виде интерпретация. Т.е. писать загрузку сложнее.
При этом скорость чтения вовсе не использованием потоков определяется, а именно интерпретацией. Бинарные - просто читаем as is. И проще контролировать целостность. Что касается объема... Например, графические данные (векторные). Тот же DXF, скажем, может занимать несколько мегабайт, а в бинарном виде - килобайты. Или растр. Посмотрела бы я на эту радость в текстовом виде... Что касается удобства отладки, то не очень представляю, что там за проблемы: что в коде ковыряться, что в огромном текстовом файле - радость небольшая. Но и то и другое - рутина. Преимущество текстового формата - его проще сделать расширяемым и независимым от версии данных. -------------------- ... |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
phprus, да. скорость - это единственный положительный момент.
это ооочень зависит... |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Разве я говорила, что хочу? А представить очень даже могу... ![]() В смысле? Конечно, от формата зависит. Но как правило плотность информации на единицу объема в бинарных данных значительно выше... -------------------- ... |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Earnest
Я имел ввиду, что
не так уж страшно ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не совсем так.. это преимущество формата с тегами над "голым" отражением и напрямую не зависит от того текстовой формат или бинарный.. Добавлено через 36 секунд azesmcar, сорри не понял с какой позиции была приведена base64 ? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |