Розмір файлу бінарного порівняно з ASCII


17

Мені потрібно записати деякі дані з обчислень, які будуть прочитані пізніше в паравізі (файл .vtu або vtk).

Якщо мова йде про розмір файлу, я повинен перейти на формат ASCII або Бінарний формат?

Відповіді:


20

Якщо ви турбуєтесь лише про розмір файлу, то вам потрібні двійкові файли. Для наочного прикладу, припустимо, ви записуєте у файл 1 подвійну точність з плаваючою точкою. Припустимо, що файлова система може відмінно справлятися з цим, а утримуючи файл, заголовки та прокладки - це 0.

Для двійкового файлу це число брало б точний розмір числа в оперативній пам’яті або 8 байт.

У форматі ASCII він міститиме:

  • 16 цифр основи
  • 1 період для десяткової
  • 1 знак для розмежування показника
  • 1 знак для ознаки показника
  • 2-3 знака для показника

Якщо припустити, що він використовує лише 1 байт для символу, тобто 22 байти, щоб утримувати те саме число. Це не враховує символів, необхідних для розмежування між числами (як правило, принаймні 1). Тому розмір файлу для формату ASCII буде приблизно в 3 рази більшим.

Ви можете торгувати розміром файлу для точності у збережених файлах (у базі зберігайте лише 5-6 цифр), але це залежить від того, для чого ви їх використовуєте. Основна перевага ASCII полягає в налагодженні або створенні даних, що читаються людиною.


3
Також важливим на науковій арені є довготривале архівування та надійний обмін, тому, незважаючи на свою неефективність, ASCII CSV є настільки поширеним і рекомендованим (PDF) .
хорхлер

2
Ще один корисний момент полягає в тому, що хоча ASCII CSV-кодування не є надто ефективним, за допомогою утиліти стиснення файлів (наприклад, zip, gzip тощо) у вашому файлі ascii зазвичай зменшується розмір файлу на щось подібне до розміру двійкового файлу. .
Брайан Борчерз

3
Будьте уважні, оскільки деякі бібліотеки вводу / виводу недостатньо обережні, щоб отримати біт для відтворюваності бітів, коли ви виводите номери IEEE Double Precision в ASCII і потім знову читаєте їх. На мій досвід, для безпеки іноді потрібно використовувати 17 або 18 десяткових цифр. .
Брайан Борчерз

5
Щодо коментаря хорхера: я впевнений, що добре використовувані, стандартизовані відкриті бінарні формати, такі як HDF5, існуватимуть довгий час. Це я особисто рекомендував.
AlexE

1
+ Я дотримуюся двійкових файлів, коли це можливо, для точності, компактності, душевного спокою та (особливо) швидкості. Тоді, якщо мені потрібна додаткова компактність, я можу це застебнути. Якщо мені потрібно вміти візуально читати вміст, я можу написати для цього невелику програму. З іншого боку, якщо важливіше бути візуальним і легко переходити до випадкових програм, таких як Excel, R і т.д., то CSV - це шлях.
Майк Данлаве

15

На практиці вам рідко потрібні дані у файлах візуалізації, які є більш точними, ніж, скажімо, 3 дійсні цифри. У цьому випадку ASCII - можливо, дивно - часто більш компактна, ніж двійкова форма. Якщо ви думаєте про архівацію, то, швидше за все, для отримання цих файлів ASCII ви отримаєте найменші файли, які ви можете отримати.

При цьому Paraview читає формат VTU, який має стиснуту бінарну форму (на основі XML, але дані спочатку стискаються libz, а потім знову кодуються, щоб отримати текст ASCII). На типових файлах це економить коефіцієнт 4-10. Для великих файлів це безумовно шлях.


2
Я проголосував за те, щоб протиставити іншій відповіді. Я не маю жодної сильної думки, але тут є хороший момент.
Білл Барт

Крім того, явно нуль низьких бітів і стиснення двійкового файлу.
Джед Браун

Нічого собі, це зажадало б певної мітливості. Або є функції, які це роблять? (Окрім того, що кидали плавати та повертатися до дубля.)
Вольфганг Бангерт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.