Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1206 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Algo le plus rapide pour trouver une répétition ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algo le plus rapide pour trouver une répétition ?

n°1159517
NullDragon
Posté le 25-07-2005 à 21:07:27  profilanswer
 

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.  :whistle:

mood
Publicité
Posté le 25-07-2005 à 21:07:27  profilanswer
 

n°1159719
Chimerade
Posté le 26-07-2005 à 00:37:33  profilanswer
 

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.  :whistle:


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...

n°1162003
matafan
Posté le 27-07-2005 à 17:39:16  profilanswer
 

La seule optimisation que je vois est de t'arreter avant le fin du fichier des que la difference entre le nombre d'occurences du caractere le plus frequent et le nombre d'occurences du deuxieme caractere le plus frequent depasse le nombre de caracteres restant a lire. Dans la plupart des cas ca ne te fera pas gagner grand chose.
 
Sinon pour ameliorer les perf, il ne faut evidemment pas lire caractere par caractere avec read(). Utilise plutot fread(), ou mappe le fichier en memoire (c'est ce que je ferais).
 
Edit : j'avais oublie des mots.


Message édité par matafan le 03-08-2005 à 16:33:33
n°1168456
el muchach​o
Comfortably Numb
Posté le 03-08-2005 à 07:39:37  profilanswer
 

Ca ne doit pas être si long que ça. En principe, en codant correctement, on doit être limité par la vitesse de transfert du disque dur, soit aujourd'hui quelques dizaines de Mo/s.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Algo le plus rapide pour trouver une répétition ?

 

Sujets relatifs
Trouver une collection de mots pour programmer un dico ?trouver la table qui contient la clé etrangère
[C#] trouver le début de semaine par rapport à une date[Algo]Algo d'un programme de messagerie ?
Où trouver un module de news wap téléchargeable?Où trouver la librairie sys/types.h?
access pb pour trouver une valeurtrouver le n° de ligne d'une combobox
Comment faire pr trouver la ligne associée d'une combobox dansOù trouver des infos pour envoyer des mails avec Lotus grace à VB
Plus de sujets relatifs à : Algo le plus rapide pour trouver une répétition ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR