2012-08-15 2 views
2

JSON과 같은 형식의 데이터가 포함 된 4KB의 버퍼가 있습니다. 훨씬 더 많은 정보를 추가해야합니다 (최대 3 배까지).하지만이 작은 메모리 덩어리에 맞춰야합니다. libZ를 사용하여 텍스트를 압축하려고 생각했지만 데이터가 대부분 고유 한 부분 문자열로 이루어져 있기 때문에 성능이 좋지 않을까 걱정됩니다. 이 상황에서 당신은 무엇을 권하고 싶습니까? 감사합니다. Chris작은 데이터 압축

답변

4

데이터에 표시 할 것으로 예상되는 최대 32K 개의 문자열이 포함 된 고정 사전을 고려하십시오. 양쪽 끝에 동일한 사전을 사용하여 zlibdeflateSetDictionary()inflateSetDictionary() (데이터의 발신자와 수신자 각각)을 사용합니다. 그게 당신이 찾고있는 압축을 얻을 수 있습니다. 사전이 없으면 적은 양의 데이터만으로 이러한 종류의 압축을 얻지 못할 것입니다.

0

압축을 계속 사용하려면 데이터의 특정 구조를 활용하는 사용자 지정 사전을 사용하는 압축 알고리즘이 가장 효과적입니다. SharpZipLib을 사용하여 이와 비슷한 기능을 구현했습니다.

버퍼에 더 많은 데이터를 저장하고 텍스트와 유사한 데이터의 압축을 사용하지 않으려면 Google의 프로토콜 버퍼와 같은 바이너리 프로토콜을 고려하십시오.

마크의 대답은 ZLIB와 함께 사용자 지정 사전을 사용하는 방법에 대해 간략하게 설명 @

업데이트.