2011-01-04 4 views
1

4,000,000 개의 'double'값 (총 32MB)의 이진 파일을 만들었습니다. 그런 다음 파일을 압축하고 놀랍게도 파일은 46KB로만 축소되었습니다.거대한 이진 파일이 거의 100 % 줄어 들었습니까?

거의 100 % 비명을 지르고 있습니다! 진짜야? 또는 나는 무엇인가 여기에서 놓치고 있냐?

+0

무엇입니까? 모두 제로? – Steve

+0

나는 낮은 가치를 느낍니다. – user562374

+0

-1000 - 1000 사이의 두 값. – user3262424

답변

8

압축률은 알고리즘 데이터에 따라 다릅니다. 예 : 32MB 상당의 0은 꽤 잘 압축됩니다.

업데이트

내 컴퓨터 과학의 기초 꽤 녹슨하지만 나는 내가 기억하는 것에서 추측 할 수 있습니다. double은 8 바이트 (64 비트)라고합시다. -1000과 1000 사이의 범위는 2^11 연속 정수와 같습니다. 따라서 64-11 = 53 비트가 모든 숫자에 공유 될 가능성이 있으며 대부분의 압축 된 공간이 나머지 11 비트에 사용됩니다. 그것은 53/64 = 82.2 %의 절약입니다.

이제 데이터가 완전히 임의적이지는 않습니다. 괜찮은 컴프레서는 반복되는 현을 감지하고 더 많은 게인을 얻을 수 있어야합니다. 단순화 된 예 :

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb ==> 30a10b