NullDragon a écrit :
Quelle serait l'algo le plus rapide pour trouver le caractère(0 à 255) qui se répète le plus dans un fichier ?
La seule méthode que j'ai trouvé est de faire un tableau de 256 éléments et de parcourir le fichier octet par octet puis avec sa valeur aller dans la même position dans le tableau puis incrémenter la valeur.
Mais quand on a un fichier d'une centaine de mb c'est long.
|
Si tu veux faire des statistiques exactes, tu es bien obligé de lire le fichier entièrement et l'incrémentation de ton tableau n'est à mon avis probablement rien devant le temps nécessaire à la lecture sur disque.
Tu peux imaginer de prendre en compte 1 caractère sur 10 ou sur 100, si tu acceptes d'avoir des statistiques approximatives. Mais je pense que cela ne changera que le temps calcul, qui est probablement négligeable devant le temps de lecture du disque.
Par contre, je te suggère d'essayer en vérifiant la taille du cluster (unité d'allocation) de ton disque et en analysant complètement un cluster sur n. Avec n = 10, n=100,... au choix. Le programme doit alors faire une lecture directe exactement d'un nombre entier de clusters (par exemple 1) en ne lisant que celui-là. Il est possible alors que tu gagneras du temps. Mais ce n'est pas certain non plus car avec une telle lecture "imprévisible" le dispositif de lecture "d'avance" du fichier ne peut être mis à profit et il est possible que cela n'aille pas plus vite...