Константа gzip.NoCompression

Константа gzip.NoCompression используется для указания уровня сжатия при создании gzip-архиватора через функцию gzip.NewWriterLevel. Она отключает сжатие данных, то есть данные записываются в несжатом виде. Константа имеет тип int и значение 0.

Использование gzip.NoCompression может быть полезно в ситуациях, когда сжатие не требуется, например, при работе с уже сжатыми данными или при необходимости экономии процессорного времени в ущерб размеру данных.

Синтаксис

gogzip.NoCompression

Пример

Создадим gzip-архиватор с отключенным сжатием и запишем в него данные:

gopackage 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))
}

Результат выполнения кода:

go"Size of compressed data: 26"
"Original data size: 26"

Как видно, размер сжатых данных совпадает с размером исходных данных, поскольку сжатие было отключено.

Пример

Давайте сравним размер данных при отключенном и стандартном сжатии:

gopackage 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())
}

Результат выполнения кода:

go"No compression size: 72"
"Default compression size: 92"

Обратите внимание, что при отключенном сжатии размер может быть даже меньше, чем при стандартном сжатии, из-за отсутствия дополнительных заголовков и служебной информации алгоритма сжатия.

Смотрите также

  • функцию gzip.NewWriterLevel,
    которая создает архиватор с указанным уровнем сжатия
  • константу gzip.BestCompression,
    которая устанавливает максимальный уровень сжатия
  • константу gzip.BestSpeed,
    которая устанавливает максимальную скорость сжатия
  • константу gzip.DefaultCompression,
    которая устанавливает стандартный уровень сжатия