Masalah:
Mengekod rentetan dalam entri kunci/nilai ke cakera menggunakan pengekodan/gob mengakibatkan kembung yang berlebihan disebabkan oleh overhed yang tidak perlu. Format output yang diingini mengetepikan definisi jenis dan hanya termasuk bait mentah dan panjang rentetan.
Analisis:
Pembentukan awal dalam pengekodan/gob berpunca daripada kemasukan jenis definisi dalam aliran yang dikodkan. Setelah takrifan ini dihantar, nilai seterusnya daripada jenis yang sama hanya dikenakan overhed minimum, menjadikannya cekap untuk pengekodan berbilang nilai.
Penyelesaian:
Untuk menghapuskan kembung yang tidak perlu , pakej pengekodan/gob tidak boleh digunakan. Sebaliknya, pertimbangkan pilihan berikut:
Demonstrasi:
Jadual berikut membandingkan saiz yang dikodkan bagi setiap entri menggunakan berbeza kaedah:
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% |
Cadangan:
Dalam kebanyakan senario praktikal, menggunakan compress/gzip atau compress/zlib memberikan keseimbangan yang baik antara nisbah mampatan dan prestasi. Walau bagaimanapun, jika kekangan ruang cakera sangat ketat, pertimbangkan untuk menggunakan bzip2 untuk keupayaan mampatan unggulnya dengan kos kecekapan yang berkurangan sedikit.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pensirilan Go Struct ke Cakera untuk Saiz Minimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!