Константа gzip.NoCompression
Константа gzip.NoCompression используется для указания уровня сжатия
при создании gzip-архиватора через функцию gzip.NewWriterLevel.
Она отключает сжатие данных, то есть данные записываются в несжатом виде.
Константа имеет тип int и значение 0.
Использование gzip.NoCompression может быть полезно в ситуациях,
когда сжатие не требуется, например, при работе с уже сжатыми данными
или при необходимости экономии процессорного времени в ущерб размеру данных.
Синтаксис
gzip.NoCompression
Пример
Создадим gzip-архиватор с отключенным сжатием и запишем в него данные:
package main
import (
"bytes"
"compress/gzip"
"fmt"
)
func main() {
var buf bytes.Buffer
writer, err := gzip.NewWriterLevel(&buf, gzip.NoCompression)
if err != nil {
fmt.Println("Error creating writer:", err)
return
}
data := []byte("This is uncompressed data")
_, err = writer.Write(data)
if err != nil {
fmt.Println("Error writing data:", err)
return
}
err = writer.Close()
if err != nil {
fmt.Println("Error closing writer:", err)
return
}
fmt.Println("Size of compressed data:", buf.Len())
fmt.Println("Original data size:", len(data))
}
Результат выполнения кода:
"Size of compressed data: 26"
"Original data size: 26"
Как видно, размер сжатых данных совпадает с размером исходных данных, поскольку сжатие было отключено.
Пример
Давайте сравним размер данных при отключенном и стандартном сжатии:
package main
import (
"bytes"
"compress/gzip"
"fmt"
)
func main() {
data := []byte("Lorem ipsum dolor sit amet, consectetur adipiscing elit")
var bufNoComp bytes.Buffer
writerNoComp, _ := gzip.NewWriterLevel(&bufNoComp, gzip.NoCompression)
writerNoComp.Write(data)
writerNoComp.Close()
var bufDefault bytes.Buffer
writerDefault, _ := gzip.NewWriterLevel(&bufDefault, gzip.DefaultCompression)
writerDefault.Write(data)
writerDefault.Close()
fmt.Println("No compression size:", bufNoComp.Len())
fmt.Println("Default compression size:", bufDefault.Len())
}
Результат выполнения кода:
"No compression size: 72"
"Default compression size: 92"
Обратите внимание, что при отключенном сжатии размер может быть даже меньше, чем при стандартном сжатии, из-за отсутствия дополнительных заголовков и служебной информации алгоритма сжатия.
Смотрите также
-
функцию
gzip.NewWriterLevel,
которая создает архиватор с указанным уровнем сжатия -
константу
gzip.BestCompression,
которая устанавливает максимальный уровень сжатия -
константу
gzip.BestSpeed,
которая устанавливает максимальную скорость сжатия -
константу
gzip.DefaultCompression,
которая устанавливает стандартный уровень сжатия