Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужна ли вообще бинарная сериализация? 
V
    Опции темы
boostcoder
Дата 24.7.2011, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



как возможно некоторые помнят, недавно я обсуждал реализацию библиотеки сериализации, т.к. от бустовской пришлось отказаться в виду ее непригодности по ряду причин smile но я не об этом.

скажите, нужна ли вообще бинарная сериализация? ведь с ней куча проблем...
в каких к примеру случаях без не никак?
почему не использовать только текстовую сериализацию?

спасибо.

PM WWW   Вверх
volatile
Дата 24.7.2011, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(boostcoder @  24.7.2011,  22:39 Найти цитируемый пост)
в каких к примеру случаях без не никак?

Имхо, любые данные можно преобразовать в текстовый вид, так что не думаю что может быть какой-то случай, что без бинарной - никак.
Просто бинарную (теоретически) можно сделать более эффективной.  (меньшее кол-во преобразовний, меньше размер выходного файла и т.д.)
Так-что если произодительность сериализации не имеет решающего значения, то текстовой вполне можно обойтись.

PM MAIL   Вверх
borisbn
Дата 24.7.2011, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(boostcoder @  24.7.2011,  22:39 Найти цитируемый пост)
скажите, нужна ли вообще бинарная сериализация? ведь с ней куча проблем...

Одна из которых, что далеко не всегда бинарные данные меньше текстовых. Например, число double, равное 3,14 в тесте занимает 4 байта, а в бинаре - 8, все целые числа меньше 1000 занимают меньше места, чем int (а таких немало - всякие индексы и т.п.)
Плюс к тому при больших объёмах текстовая информация гораздо лучше жмётся. У меня так в одном большом проекте данные перегоняются по сети - с одной стороны сериализуются в XML и сжимаются zip-ом, а на другой стороне - разжимаются и десериализуются.
Объём получился раза в 2 меньше. Время, правда, тратится на сжимание/разжимание, но, т.к. компы там быстрые, а сеть медленная (2 МБита), то овчинка выделки стоит.
А про то, что для отладки текстовый формат удобнее, думаю и говорить не стоит.
В общем в каждом конкретном случае нужно пробовать (ну или прикидывать, если получится) оба варианта и выбирать оптимальный.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 25.7.2011, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



суть вопроса заключалась и в том, что возможно есть ситуации когда бинарная сериализация не заменима, но я об этом не знаю.

у бинарной сериализации один существенный плюс - она очень быстрая. текстовая сериализация почти в 6 раз медленней. нужно искать способ избавится от стандартных потоков...
PM WWW   Вверх
volatile
Дата 25.7.2011, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(boostcoder @  25.7.2011,  00:37 Найти цитируемый пост)
суть вопроса заключалась и в том, что возможно есть ситуации когда бинарная сериализация не заменима


Цитата(volatile @  24.7.2011,  23:22 Найти цитируемый пост)
Имхо, любые данные можно преобразовать в текстовый вид, так что не думаю что может быть какой-то случай, что без бинарной - никак.


PM MAIL   Вверх
boostcoder
Дата 25.7.2011, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



volatile, вашу позицию я понял smile 
PM WWW   Вверх
afiskon
Дата 25.7.2011, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: 1
Всего: 4



Ну да, скорость, объем данных. На принтерах или бюджетных роутерах это может быть существенно. Если объект планируется шифровать, бинарные данные также предпочтительнее (если вы - параноик, террорист или работаете в гос. структуре).

Если скорость не очень важна (а железо сейчас дешевое), преобразовать текстовые данные в бинарные можно с помощью алгоритма сжатия (LZW вполне сойдет). Тут плюс в том, что бинарные данные будет легко преобразовать в текстовые, а текстовые данные хорошо парсятся скриптами или библиотеками (XML). По-моему, это хороший компромисс.


PM MAIL WWW   Вверх
boostcoder
Дата 25.7.2011, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(afiskon @  25.7.2011,  06:28 Найти цитируемый пост)
текстовые данные в бинарные можно с помощью алгоритма сжатия (LZW вполне сойдет). Тут плюс в том, что бинарные данные будет легко преобразовать в текстовые, а текстовые данные хорошо парсятся скриптами или библиотеками (XML). По-моему, это хороший компромисс.

любопытно. спасибо smile
PM WWW   Вверх
phprus
Дата 25.7.2011, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



Цитата(boostcoder @  25.7.2011,  03:37 Найти цитируемый пост)
суть вопроса заключалась и в том, что возможно есть ситуации когда бинарная сериализация не заменима, но я об этом не знаю.

Есть:
Цитата(boostcoder @  25.7.2011,  03:37 Найти цитируемый пост)
у бинарной сериализации один существенный плюс - она очень быстрая. текстовая сериализация почти в 6 раз медленней. нужно искать способ избавится от стандартных потоков... 


К примеру в моих задачах передавать снимаемые с датчиков данные (650+Мбит/с) применяется ручная бинарная сериализация (правда она имеет достаточно простую структуру, набор блоков разной длины без хранения информации о типе данных в блоке). Текстовая сериализация здесь не подошла бы по скорости.
Да и алгоритмов сжатия, способных переварить в среднем 650+Мбит/с на имеющемся у нас оборудовании я не встречал.

Цитата(afiskon @  25.7.2011,  09:28 Найти цитируемый пост)
Если скорость не очень важна (а железо сейчас дешевое)...

Только до определенного предела, потом стоимость сопровождения оборудования начинает быстро расти.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 25.7.2011, 08:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



В общем да, дело не в незаменимости, а в скорости и объеме. Чтение текстовых данных - это всегда в том или ином виде интерпретация. Т.е. писать загрузку сложнее. 
При этом скорость чтения вовсе не использованием потоков определяется, а именно интерпретацией.
Бинарные - просто читаем as is. И проще контролировать целостность.
Что касается объема... Например, графические данные (векторные). Тот же DXF, скажем, может занимать несколько мегабайт, а в бинарном виде - килобайты. Или растр. Посмотрела бы я на эту радость в текстовом виде...
Что касается удобства отладки, то не очень представляю, что там за проблемы: что в коде ковыряться, что в огромном текстовом файле - радость небольшая. Но и то и другое - рутина.
Преимущество текстового формата - его проще сделать расширяемым и независимым от версии данных. 


--------------------
...
PM   Вверх
boostcoder
Дата 25.7.2011, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



phprus, да. скорость - это единственный положительный момент.


Цитата(Earnest @  25.7.2011,  08:09 Найти цитируемый пост)
Что касается объема... Например, графические данные (векторные). Тот же DXF, скажем, может занимать несколько мегабайт, а в бинарном виде - килобайты. Или растр. Посмотрела бы я на эту радость в текстовом виде...

это ооочень зависит...
PM WWW   Вверх
azesmcar
Дата 25.7.2011, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Earnest @  25.7.2011,  08:09 Найти цитируемый пост)
Посмотрела бы я на эту радость в текстовом виде...

Осуществить твое желание поможет base64 smile 
PM   Вверх
Earnest
Дата 25.7.2011, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(azesmcar @  25.7.2011,  10:40 Найти цитируемый пост)
Осуществить твое желание поможет base64

Разве я говорила, что хочу? А представить очень даже могу... smile 
Цитата(boostcoder @  25.7.2011,  10:32 Найти цитируемый пост)
это ооочень зависит... 

В смысле? Конечно, от формата зависит. Но как правило плотность информации на единицу объема в бинарных данных значительно выше...


--------------------
...
PM   Вверх
azesmcar
Дата 25.7.2011, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Earnest

Я имел ввиду, что
Цитата

Base64-encoded binary data is usually about 137% of the original data length

не так уж страшно smile 
PM   Вверх
mes
Дата 25.7.2011, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Earnest @  25.7.2011,  07:09 Найти цитируемый пост)
Преимущество текстового формата - его проще сделать расширяемым и независимым от версии данных.  

не совсем так.. это преимущество формата с тегами над "голым" отражением  и напрямую не зависит от того текстовой формат или бинарный..

Добавлено через 36 секунд
azesmcar, сорри не понял с какой позиции была приведена base64 ?



--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1220 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.