2010-05-25 2 views
1

J'ai un fichier de taille de texte aléatoire = 27 Go et après compression, il devient 40 Mo ou plus.Comment se fait-il que différents fichiers texte deviennent des tailles différentes après la compression?

Et un fichier sql de 3,5 Go devient 45 Mo après la compression. Mais un fichier texte de 109 mb devient 72 mb après compression, ce qui peut poser problème. Pourquoi si moins compressé, il faut 10 Mo ou plus, ou il me manque quelque chose.

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

Pourquoi?

Si non, pouvez-vous dire comment super compresser un fichier texte?

Je peux coder en PHP, np en cela.

+0

Comment compressez-vous le fichier? – SLaks

Répondre

5

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

La plupart des algorithmes de compression fonctionnent en convertissant des données répétées en une seule répétition, en spécifiant 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, veuillez fournir plus d'informations.

1

La compression fonctionne en supprimant les doublons dans les données d'entrée. Votre fichier de 3,5 Go devient beaucoup moins après la compression, car il contient beaucoup de données en double, alors que votre plus petit fichier n'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 plupart des utilitaires de compression, alors regardez l'article Lempel-Ziv-Welch de Wikipedia, qui est l'algorithme sur lequel la plupart de ces algorithmes sont construits.

PHP est probablement le mauvais choix pour un tel projet, car il va être extrêmement lent dans ce langage par rapport à d'excellentes bibliothèques existantes en C qui font déjà partie de PHP lui-même.

0

Généralement, le niveau de compression dépend de la similarité des motifs et des motifs que l'algorithme peut trouver dans le fichier. Si tous les fichiers contiennent du texte en anglais, les chiffres sont étranges. Je soupçonne fortement que les fichiers qui ont un taux de compression extrême contiennent de gros morceaux de segments de texte répétitifs.

1

penser de cette façon ... si vous avez un fichier qui contient:

abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc 

Le fichier essentiellement juste magasins abc times 18

D'autre part, ce fichier:

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz 

pouvait seulement stocker:

abcdefghijklmnopqrstuvwxyz times 2 

Ainsi, le second fichier se compresse en un fichier plus volumineux que le premier, même s'il est plus court pour commencer.

0

La compression fonctionne en supprimant la redondance des données. L'endroit définitif pour commencer est probablement avec Huffman Coding qui est l'un des premiers travaux séminaux directement sur le problème, mais vous voudrez peut-être creuser plus loin aux travaux originaux de Shannon sur Information Theory.

Ce ne sont pas de nouveaux concepts - ils ont d'abord suscité un intérêt significatif dans les années 1940 et 1950 lorsque les gens étaient intéressés à transmettre des données de manière efficace sur des canaux très limités. Le sujet n'est pas seulement intéressant pour le calcul, il y a des liens très profonds avec l'entropie et d'autres physiques fondamentales. Par exemple, il s'avère que des données parfaitement compressées ne peuvent être distinguées du bruit blanc.

Questions connexes