이진 대 ASCII 파일 크기


17

나중에 Paraview (.vtu 또는 vtk 파일)로 읽을 계산에서 일부 데이터를 작성해야합니다.

파일 크기에 관해서는 ASCII 형식이나 이진 형식으로 가야합니까?

답변:


20

파일 크기 만 걱정한다면 바이너리 파일이 필요합니다. 예를 들어, 1 배정도 부동 소수점 숫자를 파일에 쓰고 있다고 가정합니다. 파일 시스템이이를 완벽하게 처리 할 수 ​​있고 파일, 헤더 및 패딩을 모두 0으로 유지한다고 가정합니다.

이진 파일의 경우 해당 숫자는 RAM에서 숫자의 정확한 크기 또는 8 바이트를 사용합니다.

ASCII 형식에서는 다음을 보유합니다.

  • 밑면의 16 자리
  • 소수점 이하 1주기
  • 지수를 구분하는 1 자
  • 지수의 부호는 1 자
  • 지수에 대해 2-3 자

문자에 1 바이트 만 사용한다고 가정하면 동일한 숫자를 보유하는 22 바이트입니다. 숫자를 구분하는 데 필요한 문자는 계산하지 않습니다 (보통 1 이상). 따라서 ASCII 형식의 파일 크기는 약 3 배 더 큽니다.

저장된 파일의 정밀도를 위해 파일 크기를 교환 할 수 있지만 (베이스에는 5-6 자리 만 유지) 사용하는 파일에 따라 다릅니다. ASCII의 주요 장점은 사람이 읽을 수있는 데이터를 디버깅하거나 생성하는 것입니다.


3
과학 분야에서도 장기 보관 및 안정적인 공유가 중요하므로 비효율적 임에도 불구하고 ASCII CSV가 널리 보급 되어 권장 되는 이유입니다 (PDF) .
horchler

2
또 다른 유용한 점은 ASCII CSV 인코딩이 효율적이지 않지만 ASCII 파일에서 zip, gzip 등과 같은 파일 압축 유틸리티를 사용하면 일반적으로 파일 크기가 이진 파일의 크기와 비슷한 크기로 줄어든다는 것입니다 .
Brian Borchers

3
ASCII로 IEEE Double Precision 숫자를 출력 한 다음 다시 읽을 때 일부 입력 / 출력 라이브러리가 비트 재현성을 위해 비트를 가져 오기에 충분히주의하지 않기 때문에주의하십시오. 내 경험상 안전을 위해 17 또는 18의 십진수를 사용해야하는 경우가 있습니다. .
Brian Borchers

5
horchler의 의견과 관련하여 : HDF5와 같은 잘 사용되는 표준화 된 개방형 바이너리 형식이 오랫동안 사용될 것이라고 확신합니다. 그것이 제가 개인적으로 추천하는 것입니다.
AlexE

1
+ 정확성, 컴팩트 성, 마음의 평안 및 (특히) 속도를 위해 가능한 한 이진법을 고수합니다. 그런 다음 추가 압축이 필요한 경우 압축 할 수 있습니다. 내용을 시각적으로 읽을 수 있어야하는 경우 작은 프로그램을 작성할 수 있습니다. 반면에 시각적 인 것이 더 중요하고 Excel, R 등과 같은 임의의 프로그램으로 쉽게 전달되는 경우 CSV가 좋습니다.
Mike Dunlavey

15

실제로는 유효 숫자 3 개보다 정확한 시각화 파일의 데이터가 거의 필요하지 않습니다. 이 경우 ASCII는 놀랍게도 바이너리 형식보다 더 컴팩트합니다. 보관에 대해 생각하고 있다면 이러한 ASCII 파일을 압축하여 얻을 수있는 가장 작은 파일을 생성 할 수 있습니다.

즉, Paraview는 압축 된 이진 형식 (XML 기반이지만 데이터는 먼저 libz 압축 된 다음 다시 uuencode되어 ASCII 텍스트를 생성 함) 인 VTU 형식을 읽습니다. 일반적인 파일에서는 4-10 배가 절약됩니다. 큰 파일의 경우 이것은 확실히 갈 길입니다.


2
나는 다른 답변과 대조적으로 이것을 투표했습니다. 나는 어느 쪽이든 강한 의견을 가지고 있지 않지만 여기에 좋은 지적이 있습니다.
Bill Barth

또는 하위 비트를 명시 적으로 0으로 설정하고 이진을 압축하십시오.
제드 브라운

와우, 그것은 약간의 비트 인증이 필요합니다. 아니면 그렇게하는 기능이 있습니까? (float으로 캐스팅보다는 다시 기타 두 배로.)
볼프강 Bangerth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.