Das von mir vorgeschlagene Verfahren funktioniert nur in Chunks à 32k (oder 64?). Schau einfach in den Code, dann siehst Du die Words. Wenn Du deine Daten so aufteilst, dann klappt das. Dann ist der Output eben immer ein Tupel (Länge, DATA) und nicht ein einziger Stream.
Übrigens ist es nicht 'fair' ein Kompressionsverfahren auf Zufallsdaten anzuwenden. Ein perfekter Zufallszahlengenerator zeichnet sich ja gerade dadurch aus, das er keine Redundanz erzeugt. Es wird sogar gemunkelt, das das Ergebnis einer Kompression (also der bytestrom) als sehr perfekter Randomgenerator taugt.
Viele Kompressionsverfahren, die in der freien Wildbahn recht schnell sind, beissen sich performancemässig an Zufallszahlen die Zähne aus. Nimm doch lieber Sourcecode oder irgendwelche EXE-files.
Ich habe dein testprogramm ein wenig modifiziert, damit 'mein' Kompressor auch zum Zug kommen kann und siehe da: Er versagt bei random-dateien und liegt ansonsten zwischen Huffman und
zlib.
Ich habe einfach die EXE als Input genommen.