|
Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения |
Результаты опроса: Бинарные файлы (объекты сериализации) устарели?
|
1) Только текст
|
|
2 |
18.18% |
2) Только бинарка
|
|
0 |
0% |
42 (пояснить в посте)
|
|
9 |
81.82% |
30.06.2012, 01:38
|
#1
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Бинарные файлы
Определимся с терминологией. Под бинарным файлом здесь я понимаю такой способ организации (накладывающей особенности на операции чтения/записи) хранения информации в файле, при которой данные представляют собой, по сути дамп памяти. Иными словами, переменная
при записи в бинарный файл, занимает ровно 4 байта (т.е. sizeof(int) ) и при открытии целевого файла блокнотом не читается в "человеческом" восприятии.
При записи той же переменной в текстовый (не бинарный) файл, переменная займёт 6 байт (при ASCII-кодировании), каждый из которых будет кодировать одну цифру.
Для Blitz basic: бинарный режим - функции типа ReadInt/WriteInt, текстовый - WriteLine.
Плюсы бинарного режима: возможность сэкономить на памяти и стандартизировать требования к её размерам; возможность сохранять произвольные разнородные данные простой запись куска памяти.
Минусы: возможность потратить память (например, если сохраняемые числа в диапазоне [0..999] для int) и полностью утратить возможность к стандартизации (разные архитектуры и платформы); невозможность сохранять данные простой записью куска памяти (разный порядок байт внутри переменной в зависимости от архитектуры, выравнивания и полный хаос со структурами, беготня, спотыкания и ещё большая непереносимость с директивами #pragma pack; адресация членов объекта через указатели, приводящая к необходимости написания отдельных методов его сохранения).
Получается, что бинарные файлы - это хак. Его переносимость весьма условна.
В то же время, используя текстовый формат, мы по сути, перекладываем обязанности по загрузке\выгрузке (трансляции из файла\в файл ) на функции типа atoi\itoa, работающие на более высоком уровне абстракции: медленнее, но зато без оглядки на "аппаратные" особенности.
Речь даже не только о файлах, но о любой сериализации (ту же структурку по сети кинуть - как кодировать?).
Опрос открытый
Спасибо всем кто осилил излияния и дочитал до конца.
Просьба сильно не пинать, если где-то заблуждаюсь
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
30.06.2012, 01:53
|
#2
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Бинарные файлы
оффлайн данные для игры необходимо хранить в бинарном виде, максимально близком к его представлению в памяти. иное не нужно.
данные, нужные для редактирования в процессе разработке лучше иметь в более универсальном читабельном виде - по крайней мере опыт использования редактируемых данных в бинарном виде у меня негативный.
по сети слать хз, я работу с сетью писал для проекта, в котором протокол был 100% стандартизирован, а скорость критична, так что были бинарные структуры.
|
(Offline)
|
|
Эти 6 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
30.06.2012, 01:54
|
#3
|
|
Ответ: Бинарные файлы
в практическом понимании : бинарный файл это любой файл для редактирования содержимого которого нужно использовать hex (или специфический) редактор
в теоретическом понимании : любой файл = бинарный файл, те это синонимы, но если внутри бинарных файлов данные представлены в текстовой кодировке (ASCII, UTF-8, UTF-16) и тд, то данные называют текстовыми данными, но файл по прежнему бинарный (ведь в utf есть нехитрый такой хак чтобы определить порядок битов в байте, собсно отсюда текст это данные, но никак не файл)
|
|
|
Сообщение было полезно следующим пользователям:
|
|
30.06.2012, 01:55
|
#4
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Бинарные файлы
Вообще то при чтении можно задавать порядок байт в слове, тем самым обойти апаратные отличия в кодировании чисел.
Увлечение переносимостью и читабельностью файлов привело к созданию монстров типа XML, на парсинг которых уходит огромное количество процессорного времени.
Обоим типа записи быть, это можно заметить по тому что многие программы имеют как бинарный так и текстовый тип файла. Например DWG и DXF.
А вообще тип записи выбирается исходя из конкретных задач. Например конфигурационные файлы, для которых скорее всего небудет создан редактор, лучше делать текстовыми для правки их любым текстовым процессором. А например файлы сохранения игры, лучше реализуются бинарным способом.
__________________
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
30.06.2012, 01:58
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Бинарные файлы
Сообщение от jimon
в практическом понимании : бинарный файл это любой файл для редактирования содержимого которого нужно использовать hex (или специфический) редактор
в теоретическом понимании : любой файл = бинарный файл, те это синонимы, но если внутри бинарных файлов данные представлены в текстовой кодировке (ASCII, UTF-8, UTF-16) и тд, то данные называют текстовыми данными, но файл по прежнему бинарный (ведь в utf есть нехитрый такой хак чтобы определить порядок битов в байте, собсно отсюда текст это данные, но никак не файл)
|
вот специально для таких хитрых я и написал длинное вступление. Спасибо, конечно, за философское уточнение, ещё можно рассказать, что все данные это 0 и 1, а потом спустится ещё ниже - к непрерывным аналоговым сигналам... по теме же - ни слова
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
30.06.2012, 02:01
|
#6
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Бинарные файлы
Скажем так. Всё зависит от задачи.
Если данные летят по сети и их реально много, то однозначно бинарные.
Для хранения на диске примерно так:
Если данные достаточно однотипны (например тайловая карта) то тут быстрее и удобнее писать её бинарно.
Ежели данные разнообразные - неравномерные, то проще текстом.
Упакованные данные конечно в бинарном виде.
Данные в которых только текст как ни странно в текстовом виде
Хотя текст и есть бинарные данные, но я твою мысль понял
Кстати, а если в текстовом виде байты чрез запятую написать это текстовый формат или нет?
Сугубо личное мнение.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.06.2012, 02:02
|
#7
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Бинарные файлы
Сообщение от SBJoker
Вообще то при чтении можно задавать порядок байт в слове, тем самым обойти апаратные отличия в кодировании чисел.
|
Пожалуйста, подробнее (цпп).
Опять-таки проблема со структурами остаётся. Можно конечно, сначала всё разбирать до базовых типов, а сохранять уже отдельно их...
Сообщение от Randomize
Если данные летят по сети и их реально много то однозначно бинарные.
|
согласен полностью, но с сожалением.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
30.06.2012, 02:08
|
#8
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Бинарные файлы
Сообщение от impersonalis
согласен полностью, но с сожалением.
|
Почему? Текст пожалуй нужен только для наглядности.
Текст это тоже самое только человекочитаемо.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
30.06.2012, 02:14
|
#9
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Бинарные файлы
Сообщение от Randomize
Почему? Текст пожалуй нужен только для наглядности.
Текст это тоже самое только человекочитаемо.
|
Текст - лишён ряда недостатков, которых не лишены другие типы данных (для jimon: да, я намеренно упрощаю формулировку, чтобы её можно было прочитать в течение дня; да - противопоставление некорректно). Т.е. на одной машине - big-endian, на другой - little-endian, но текстовое представление этого числа - одинаковое (цифры слева-направо по убыванию степеней). Т.е. текст - своеобразный интерфейс.
Организация структур - усмотрение компилятора, директивы управления этим процессом делают код менее портабельным и модульным.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
30.06.2012, 02:26
|
#10
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Бинарные файлы
Текст - лишён ряда недостатков, которых не лишены другие типы данных (для jimon: да, я намеренно упрощаю формулировку, чтобы её можно было прочитать в течение дня; да - противопоставление некорректно). Т.е. на одной машине - big-endian, на другой - little-endian, но текстовое представление этого числа - одинаковое (цифры слева-направо по убыванию степеней). Т.е. текст - своеобразный интерфейс.
|
что-то мне подсказывает, что конвертнуть big endian в little endian быстрее, чем парсить человекочитаемый текст.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
30.06.2012, 02:38
|
#11
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Бинарные файлы
Сообщение от Mr_F_
что-то мне подсказывает, что конвертнуть big endian в little endian быстрее, чем парсить человекочитаемый текст.
|
безусловно (я об этом писал выше). Осталось только продумать соответствующую отметку в файле. И не забыть её при загрузке учесть. А ещё и код написать, который сам будет определять специфику архитектуры, на которой он выполняется (думаю, это реально, но как, лично я - не знаю).
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
30.06.2012, 02:39
|
#12
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Бинарные файлы
зависит от задачи
почти всегда хватает бинарных. конфиги там всякие - удел текстовых.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.06.2012, 02:40
|
#13
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Бинарные файлы
Сообщение от HolyDel
зависит от задачи
почти всегда хватает бинарных. конфиги там всякие - удел текстовых.
|
и как обойти проблемы совместимости?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
30.06.2012, 02:42
|
#14
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Бинарные файлы
Бывает важно экономить.
Бывает важна человекочитаемость/скорость разработки.
бывает подо что-то уже есть готовый велосипед.
Так что "только то" либо "только это" ответить нельзя.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
30.06.2012, 02:47
|
#15
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Бинарные файлы
а где вообще конкретно такие проблемы с совместимостью встречались?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:14.
|