begin process at 2012 05 29 23:07:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

lecture d'un fichier, vitesse d'execution


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

lecture d'un fichier, vitesse d'execution

lundi 13 juin 2011 à 12:10:14 | lecture d'un fichier, vitesse d'execution

vercd7am

Bonjour,

voulant lire un gros fichier, il y a une question que je me pose pour ne pas faire ramer mon ordinateur et avoir la reponse la plus rapide possible.

Si j'ouvre un fichier .txt contenant jusqu'a plusieurs millions de lignes (plusieurs centaines de millions), chacune contenant (ou pas) un nombre qui m'interesse (je sais a l'avance que le nombre comprends 9 chiffres et c'est a peu pres tout) et que je veux recuperer (faire la liste des nombres rencontres, la fequence d'apparition d'un nombre et lier cela a d'autres infos), j'ai pense a deux options :

la premiere consiste a recuperer les nombres au fur, et les enregistrer dans une liste (ou autre structure) par exemple, si je ne les ai pas rencontres avant

la deuxieme consisterait a preparer ce meme type de liste, mais a l'avance, intialisee a 0 pour la frequence d'apparitions.

Le probleme c'est que ces deux solutions me paraissent aussi bete l'une que l'autre : la premiere m'obligeant a parcourir ma liste a chaque fois que je rencontre un nombre, a la recherche de ce meme nombre, la deuxieme parce que je me reserve de la place tout a fait inutilement, tout ca parce que je connais juste l'intervale des valeurs qui peuvent etre prises et que je pense que la memoire risque de ne pas apprecier.

Existe-t-il une solution plus inteligente, ou sinon quelle serait la plus inteligente de ces deux solutions precedentes ?
lundi 13 juin 2011 à 13:27:07 | Re : lecture d'un fichier, vitesse d'execution

CptPingu

Administrateur CodeS-SourceS
Pourquoi n'utilises-tu pas une table de hash ?
Ça te premettrait de ne créer des entrées que pour ce dont tu as besoin, et pour vérifier l'existance d'une entrée, ça serait quasi instantané. (En plus, avec comme clé, ta valeur, tu n'auras pas de collision).

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
mercredi 22 juin 2011 à 10:52:36 | Re : lecture d'un fichier, vitesse d'execution

vercd7am

Merci pour la reponse. Desole d'avoir mis du temps pour repondre, mais j'ai du m'instruire sur les tables de hachage. Je ne suis pas tout a fait sur que ce soit la solution ideale pour mon probleme.

Pour etre concret :
disons que j'ai un fichier sur x personnes (x >> 1) fequentant un nombre y de piscines publiques. J'ai des information sur leur sexe, le temps qu'elles restent, s'y elles viennent seules, avec des enfants, quels jours, s'y elles achetent des frites a la cafeteria et ainsi de suite.

Comment trier les informations pour que lorsque je lui demande "quels clients frequentent telle piscine ?" ou encore "donne moi la liste des clients qui viennent avec des enfants" ou bien encore "combien de personnes achetent des frites a midi" j'obtienne une reponse extremement rapide ?
vendredi 24 juin 2011 à 09:48:35 | Re : lecture d'un fichier, vitesse d'execution

LA_Tupac

Membre Club
Ouai c'est une base de données quoi.
Tu as déjà ce fichier? Si oui utilise la lib en C++ qui l'exploite...
Sinon pareil tu choisis un format de base opensource (de préférence) et tu l'attaque par la lib en question
vendredi 24 juin 2011 à 10:09:47 | Re : lecture d'un fichier, vitesse d'execution

vercd7am

oui c'est une base de donnee.

Je ne comprends pas bien le sens de "la lib en c++ qui l'exploite". Dois-je comprendre qu'il existe une biblitotheque c++ qui permet de creer une base de donnees et d'en tirer les informations ?
Si tel est le cas, existe-t-il la même chose pour le c. J'ai une aversion extremement prononcee pour tous les languages orientes objet depuis mes annees d'ecole.
vendredi 24 juin 2011 à 17:52:20 | Re : lecture d'un fichier, vitesse d'execution

LA_Tupac

Membre Club
lol faut pas toucher au C++ alors
Il n'y a pas longtemps j'ai récupéré une base DBF d'un ancien soft pour le porter sur du récent. J'ai trouvé un "connector" (en gros une p'tite lib) avec les fonctions de base, load() write() addrecord() etc...
C'est quel format toi? tu le sais au moins?
Dans le cas contraire il va te falloir beaucoup de courage pour comprendre la structure du fichier. Surtout si une partie est écrite en binaire !
samedi 25 juin 2011 à 13:47:24 | Re : lecture d'un fichier, vitesse d'execution

vercd7am

A chaque fois j'ai deux fichiers txt, le premier contenant 14 "colonnes", le deuxieme 17 (j'ai enormement de paires de fichiers comme ça).

Je n'ai pas de probleme pour recuperer les informations (dans des strucutres) et traiter tout un tas d'operations basiques comme faire des sommes ou des recherches. Mais j'aimerais bien pouvoir faire tout un tas d'autres operations dans un temps "raisonnable". D'ou le "comment trier ces informations". La table de hachage proposee precedemment me semble un bon point de depart, mais a mon avis il m'en faudrait plusieurs avec des pointeurs les unes vers les autres a mon avis.

Si je pouvais avoir une librairie qui me permettent de trier ces informations comme dans une base de donnee ce serait pas mal.
mardi 28 juin 2011 à 11:42:38 | Re : lecture d'un fichier, vitesse d'execution

LA_Tupac

Membre Club
Oui oui sauf que ce format (bien tordu apriori) est certainement propriétaire et très peut utilisé... Oublie tu ne trouvera certainement pas de lib toute faite.
Sois fort


Cette discussion est classée dans : fichier, lecture, nombre, liste, vitesse


Répondre à ce message

Sujets en rapport avec ce message

Lecture d'un fichier texte pour mettre dans une liste chainée [ par webgladiator ] Merci de prendre du temps à me lire.J'ai un projet d'info dont le but est d'effectuer le plus court itinéraire dans le metro parisien (opimisation).J' lecture de fichier texte [ par mig73 ] salut a tousj'ai un projet à réaliser avant la fin de la semaine alors si vous pouvez m'aider c'est COOLma tâche est la suivante:je dois pouvoir lire Lecture de fichier [ par giuseppe2 ] Bonjour,Je commence tout juste en C++ et je me galère commen un fou pour des histoires de lecture de données à partir d'un fichier.J'ouvre un fichier Lecture d'un entier dans un fichier [ par nassim1987 ] bonjour, je programme en C, je voudrais récupérer un entier dans une variable à partir d'un fichier, cependant ce nombre est à la 3éme ligne ,commen lecture d'une liste en c++ [ par noussa44 ] Bonjour à tous, J'ai des réels dans une liste et j'ai besoin d'appliquer arc tangente pour chaque réel (atan(x)) mais je suis bloqué comment lire ces Lecture de la dernière ligne d'un fichier .txt [ par marouenetrab ] Bonjour, je suis novice dans le domaine de codage "C" sous linux et j'ai besoin d'un code qui me permet de lire uniquement la dernière ligne d'un fich mettre un fichier texte dans un tableau en C [ par snake57 ] Bonjour à tous, je me suis fais 3 petite fonction. La première me permet de récupérer le nombre de ligne dans un fichier texte. La seconde me renvoie lecture fichier .obj [ par azertyu007 ] salut, je veux lire et extraire les donné d'un fichier .obj mais en utilisant ofstream j'arrive pas a le lire comment je peux lire ce type de fichier calcul du nombre de caractere dans un fichier [ par Pitdeboole ] slt les pro j'ai un peti souci voila ce code est censer creer un fichier puis compte nom le nombre de caractere contenu dans ce fichier y compri les e


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales