Heim  >  Artikel  >  Backend-Entwicklung  >  Vergleichen Sie die PHP-Komprimierungsfunktionen gzencode, gzdeflate und gzcompress

Vergleichen Sie die PHP-Komprimierungsfunktionen gzencode, gzdeflate und gzcompress

巴扎黑
巴扎黑Original
2017-08-21 14:15:463683Durchsuche

gzencode verwendet standardmäßig die ZLIB_ENCODING_GZIP-Kodierung und das gzip-Komprimierungsformat. Es verwendet tatsächlich den Defalte-Algorithmus, um Daten zu komprimieren, und fügt dann Dateiheader und adler32-Überprüfung hinzu.

gzdeflate verwendet standardmäßig die ZLIB_ENCODING_RAW-Kodierung und verwendet das Deflate Der Datenkomprimierungsalgorithmus verwendet tatsächlich zuerst die LZ77-Komprimierung und verwendet dann die Huffman-Codierung zum Komprimieren. Standardmäßig wird die ZLIB_ENCODING_DEFLATE-Codierung verwendet, und tatsächlich wird Deflate verwendet Komprimieren Sie die Daten und fügen Sie dann den Zlib-Header und die CRC-Korrektur hinzu.

Der Vergleich dieser drei Funktionen ist im Wesentlichen ein Vergleich von drei Komprimierungsmethoden: Deflate, Zlib und Gzip.

Aus Sicht der Leistung: Deflate ist besser als gzip und besser als zlib

Aus Sicht der Standardkomprimierungsrate von Textdateien nach der Komprimierung: Deflate ist besser als zlib und besser als gzip

Die Autoren von gzip und zlib unter diesen drei Algorithmen sind Jean-Loup Gailly und Mark Adler.

Die von diesen beiden Algorithmen verwendeten Komprimierungsalgorithmen und das Grafikformat PNG sind allesamt Deflate-Algorithmen.

Der Deflate-Algorithmus ist ein verlustfreier Datenkomprimierungsalgorithmus, der sowohl den LZ77-Algorithmus als auch die Huffman-Codierung verwendet.

Es wurde ursprünglich von Phil Katz für Version 2 seines PKZIP-Archivierungstools und später in der RFC 1951-Spezifikation definiert.

Der Implementierungsprozess der Komprimierung und Dekomprimierung des Deflate-Algorithmus finden Sie in der Komprimierungsbibliothek zlib.

Die Komprimierungsimplementierung von PHP basiert auf zlib, einer Funktionsbibliothek, die die Komprimierungsmethoden deflate, zlib und gzip bereitstellt.

Die oben genannten drei Funktionen verwenden wir. Wenn die Codierung in den Parametern auf dieselbe geändert wird und die Komprimierungsrate auf dieselbe eingestellt ist, wird letztendlich dieselbe Funktion aufgerufen, und der Effekt und die Leistung sind gleich Dasselbe.

Die zlib-Implementierung von PHP existiert im Verzeichnis ext/zlib als Erweiterung. Die Komprimierungsfunktion wird durch die drei Funktionen deflateInit2() + deflate() + deflateEnd() abgeschlossen, und die Dekomprimierungsfunktion wird durch die drei Funktionen inflateInit2() + inflate() + inflateEnd() abgeschlossen. Die Komprimierung wird letztendlich über die Funktion php_zlib_encode aufgerufen. Zusätzlich zur Eingabezeichenfolge, der Komprimierungsrate und der Ergebnisausgabe sind die verschiedenen Eingabeparameter des Funktionsaufrufs deren Codierung. Der vierte Parameter von deflateInit2 gibt die Kodierung an. PHP definiert drei Konstanten: + 16#define PHP_ZLIB_ENCODING_DEFLATE 0x0f // zlib 15

Drei Funktionen können die Kodierung direkt angeben, um andere Algorithmen während des Aufrufprozesses zu verwenden:

zlib: ZLIB_ENCODING_DEFLATE gzip: ZLIB_ENCODING_GZIPdeflate: ZLIB_ENCODING_RAW

Diese drei Funktionen sind drei Algorithmen. Einfache Aufrufmethode, bessere Namensanzeige. Die drei Funktionen können den gleichen Effekt erzielen, indem sie dieselbe Codierung angeben, und PHP stellt außerdem die Funktion zlib_encode als universelle Komprimierungsfunktion bereit.

Das obige ist der detaillierte Inhalt vonVergleichen Sie die PHP-Komprimierungsfunktionen gzencode, gzdeflate und gzcompress. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn