Hallo,
ich benötige einen schnellen Koprimierungsalgorithmus, um Pakete vor dem Verschicken über einen TCP Client etwas zu verkleinern. Ursprünglich hatte ich mir dafür QuickLZ ausgesucht, welche folgende statischen Methoden aufweist:
Nun habe ich mir den LZF Algorithmus ausgesucht, welcher sehr ähnlich von der Geschwindigkeit her sein soll. Jedoch verwirren mich jetzt die Signaturen der Methoden: (Quelle)
Als erstes fehlt mir, dass ich bestimmen kann, ab wann er denn eigentlich komprimieren soll. Zweitens verwirrt mich, dass ich einen Buffer angeben soll. Soll ich jetzt schätzen, wie groß es nachher wird?! Wie soll ich das denn schätzen? Mit QuickLZ habe ich die Erfahrung gemacht, dass es manchmal nach dem Komprimieren wesentlich größer war als vorher, aber manchmal auch wesentlich kleiner. Wie soll das denn funktionieren, ohne dass da dauernd eine Exception ausgelöst werden kann? Und wieso soll ich ihm sagen, wie groß der angegebene Buffer ist, obwohl er das doch selber einfach gucken kann.
Wäre schön, wenn mir mal hier jemand auf die Sprünge helfen kann
ich benötige einen schnellen Koprimierungsalgorithmus, um Pakete vor dem Verschicken über einen TCP Client etwas zu verkleinern. Ursprünglich hatte ich mir dafür QuickLZ ausgesucht, welche folgende statischen Methoden aufweist:
Nun habe ich mir den LZF Algorithmus ausgesucht, welcher sehr ähnlich von der Geschwindigkeit her sein soll. Jedoch verwirren mich jetzt die Signaturen der Methoden: (Quelle)
C#-Quellcode
- /// <summary>
- /// Compresses the data using LibLZF algorithm
- /// </summary>
- /// <param name="input">Reference to the data to compress</param>
- /// <param name="inputLength">Lenght of the data to compress</param>
- /// <param name="output">Reference to a buffer which will contain the compressed data</param>
- /// <param name="outputLength">Lenght of the compression buffer (should be bigger than the input buffer)</param>
- /// <returns>The size of the compressed archive in the output buffer</returns>
- public int Compress(byte[] input, int inputLength, byte[] output, int outputLength)
- /// <summary>
- /// Decompresses the data using LibLZF algorithm
- /// </summary>
- /// <param name="input">Reference to the data to decompress</param>
- /// <param name="inputLength">Lenght of the data to decompress</param>
- /// <param name="output">Reference to a buffer which will contain the decompressed data</param>
- /// <param name="outputLength">The size of the decompressed archive in the output buffer</param>
- /// <returns>Returns decompressed size</returns>
- public int Decompress(byte[] input, int inputLength, byte[] output, int outputLength)
Als erstes fehlt mir, dass ich bestimmen kann, ab wann er denn eigentlich komprimieren soll. Zweitens verwirrt mich, dass ich einen Buffer angeben soll. Soll ich jetzt schätzen, wie groß es nachher wird?! Wie soll ich das denn schätzen? Mit QuickLZ habe ich die Erfahrung gemacht, dass es manchmal nach dem Komprimieren wesentlich größer war als vorher, aber manchmal auch wesentlich kleiner. Wie soll das denn funktionieren, ohne dass da dauernd eine Exception ausgelöst werden kann? Und wieso soll ich ihm sagen, wie groß der angegebene Buffer ist, obwohl er das doch selber einfach gucken kann.
Wäre schön, wenn mir mal hier jemand auf die Sprünge helfen kann