문제:
다음을 사용하여 키/값 항목의 문자열을 디스크에 인코딩합니다. 인코딩/gob은 불필요한 오버헤드로 인해 과도한 팽창을 초래합니다. 원하는 출력 형식은 유형 정의를 생략하고 원시 바이트 및 문자열 길이만 포함합니다.
분석:
인코딩/gob의 초기 팽창은 유형을 포함하는 데서 비롯됩니다. 인코딩된 스트림의 정의. 이러한 정의가 전송되면 동일한 유형의 후속 값은 최소한의 오버헤드만 발생하므로 여러 값을 인코딩하는 데 효율적입니다.
해결책:
불필요한 부풀림을 제거하려면 , 인코딩/gob 패키지를 사용하면 안 됩니다. 대신 다음 옵션을 고려하세요.
데모:
다음 표에서는 항목당 인코딩된 크기를 비교합니다. 다른 것을 사용하여 방법:
Method | Encoded Size (Bytes) | Compression Ratio |
---|---|---|
Naked Output | 16.04 | 100% |
Flate | 4.12 | 26% |
Zlib | 4.13 | 26% |
Gzip | 4.14 | 26% |
Bzip2 | 2.04 | 12.7% |
권장 사항:
대부분의 실제 시나리오에서 압축/gzip 또는 압축/zlib를 사용하면 압축 비율과 성능 간의 균형이 잘 맞습니다. 그러나 디스크 공간 제약이 매우 엄격한 경우 효율성이 약간 떨어지는 대신 뛰어난 압축 기능을 제공하는 bzip2를 사용하는 것이 좋습니다.
위 내용은 최소 크기를 위해 디스크에 대한 Go 구조체 직렬화를 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!