Comment ça se fait, les différents fichiers de texte deviennent différentes tailles après compression?

StackOverflow https://stackoverflow.com/questions/2906491

Question

Je fichier d'une certaine taille du texte aléatoire = 27 gb et après compression, il devient 40 mb ou environ.

Et un fichier sql 3.5 Go devenu 45 Mb après compression.

Mais un fichier texte 109 mb se 72 mb après la compression Que peut-on mal avec elle.

Pourquoi donc moins comprimé, il faut 10 Mo environ, ou je manque quelque chose.

Tous les fichiers que je peux voir est un texte anglais seulement et certains symboles et de grammaire (/, -. = + Etc)

Pourquoi?

Si tu ne peux pas dire comment puis-je compresser super un fichier texte?

Je peux coder en PHP, np en cela.

Était-ce utile?

La solution

Le taux de compression d'un fichier dépend de son contenu.

La plupart des algorithmes de compression fonctionne en convertissant les données répétées en une seule répétition, en précisant combien de fois il a été répété.

Par exemple, un fichier contenant la lettre a 1.000.000 fois peut être compressé beaucoup plus qu'un fichier avec un contenu complètement aléatoire.

Pour plus d'informations, s'il vous plaît fournir plus d'informations.

Autres conseils

Pensez à cette façon ... si vous avez un fichier qui contient:

abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc

Le fichier stocke essentiellement juste abc times 18

D'autre part, ce fichier:

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

ne pouvait stocker:

abcdefghijklmnopqrstuvwxyz times 2

Ainsi, le second fichier compresse sous forme de fichier plus grand que le premier, même si elle est plus courte pour commencer.

Compression fonctionne en supprimant les doublons dans les données d'entrée. Votre fichier 3.5GB devient beaucoup moins après la compression, car il a beaucoup de données en double, alors que votre fichier plus petit est pas compressé autant parce qu'il ne contient pas autant de données en double.

Si vous voulez comprendre comment fonctionne la compression est la plus zipper utilitaires, puis regardez Wikipedia article de Lempel-Ziv-Welch, qui est l'algorithme sur lequel la plupart de ces algorithmes sont construits.

PHP est probablement le mauvais choix pour un tel projet parce que ça va être extrêmement lent dans cette langue par rapport à parfaitement bonnes bibliothèques existantes en C qui font déjà partie de PHP lui-même.

En général, le niveau de compression dépend de la quantité et la similarité des modèles de l'algorithme peut trouver dans le fichier. Si tous les fichiers contiennent du texte anglais les chiffres sont étranges. Je soupçonne fort que les fichiers qui ont un taux de compression extrême contiennent de gros morceaux de répéter des segments de texte.

Compression fonctionne en supprimant la redondance dans les données. Le lieu définitif de départ est probablement avec Huffman qui est l'une des premières œuvres séminales directement sur le problème, mais vous pouvez prendre soin de creuser plus loin à des œuvres originales de Shannon sur Théorie de l'information.

Ce ne sont pas nouveaux concepts - ils ont d'abord gagné en arrière d'intérêt important dans les années 1940 et des années 50 quand les gens étaient intéressés par la transmission de données de manière efficace des canaux sur de très limitées. Le sujet est non seulement d'intérêt pour calculer soit - il y a des liens très profonds avec l'entropie et autres physique fondamentale. Par exemple, il se révèle des données parfaitement compressées ne se distingue pas du bruit blanc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top