Ich verwende einen Event-Loop-basierten Server in Twisted Python, der Dateien speichert, und ich würde in der Lage sein, die Dateien entsprechend ihrer Komprimierbarkeit zu klassifizieren.Wie kann ich die Komprimierbarkeit einer Datei schätzen, ohne sie zu komprimieren?
Wenn die Wahrscheinlichkeit, dass sie von der Komprimierung profitieren, hoch ist, würden sie in ein Verzeichnis mit aktivierter btrfs-Komprimierung gehen, andernfalls würden sie woanders hingehen.
Ich muss nicht sicher sein - 80% Genauigkeit wäre reichlich, und würde eine Menge Speicherplatz sparen. Aber da es auch das CPU- und fs-Leistungsproblem gibt, kann ich nicht einfach alles komprimieren.
Die Dateien befinden sich in den niedrigen Megabyte. Ich kann sie nicht testen, ohne einen großen Prozessorblock zu verwenden und die Ereignisschleife übermäßig zu verzögern oder einen Komprimierungsalgorithmus zu refaktorieren, der in die Ereignisschleife passt.
Gibt es eine Best Practice, um eine schnelle Schätzung der Kompressibilität zu geben? Ich habe einen kleinen Brocken (wenige kB) Daten vom Anfang der Datei genommen, ihn komprimiert (mit einer vermutlich tolerierbaren Verzögerung) und meine Entscheidung darauf gestützt.
Irgendwelche Vorschläge? Hinweise? Mängel in meiner Argumentation und/oder Problem?
Um nur das Offensichtliche zu sagen, haben Sie nicht den Komprimierungsalgorithmus erwähnt, den Sie verwenden möchten. Nachdem ich das gesagt habe, glaube ich nicht, dass Sie nichts tun können, ohne die Datei mindestens einmal zu überprüfen. – Alexander
Warum können Sie keine progressive Komprimierung verwenden? –
Das Komprimieren eines kleinen Teils wird nicht helfen: Wenn der Rest der Datei nur aus Kopien dieses Teils besteht, ist es leicht zu komprimieren. Ich fürchte, die einzige gute Lösung ist, die gesamte Datei zu komprimieren. –