Manipulation et traitement des données des grands fichiers [Résolu]

Messages postés
6
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
19 juillet 2010
- - Dernière réponse : cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
- 10 avril 2009 à 11:33
Slt,
jai deux fichier en entree personnes.csv (personnesID,nom) 3000 lignes et peresfils.csv(pereID,filsID) 60000 
donc chaque personne dans personnes.csv a 30 fils et les fils sont aussis des peres dans certains cas...
la je veux marcher jusquau 5eme generation en comparaison le nom du pere avec les noms de ses fils et pour chaque fils on compare le nom du pere avec ses fils :
pere_nom avec fils_nom avec fils_nom 4 fois  
jai lu les deux fichier .CSv avec csharp et je lai mis dans un BDD access
jen ai a la fin le code suivant :
for i de 0 à 3000(por chaque personnes)
{
tbgeneration1= tabelau resulat de la requette de BDD des fils de i avec chacun son  nom
for j de 0 à tb.count   // 30 fois
{
comparaison des noms avec le nom du pere i  la racine
tbgeneration2= tabelau resulat de la requette de BDD des fils de j avec chacun son  nom
for k de 0 à tbgeneration2.count  // 30 fois
{
comparaison des noms avec le nom du pere i  la racine
tbgeneration3= = tabelau resulat de la requette de BDD des fils de k avec chacun son  nom
for l de 0 à tbgeneration3.count // 30 fois
{
comparaison des noms avec le nom du pere initial i  la racine
tbgeneration4= = tabelau resulat de la requette de BDD des fils de l avec chacun son  nom
for m de 0 à tbgeneration4.count  // 30 fois
{
comparaison des noms avec le nom du pere initial i  la racine;




messagebox.show("job done");


ca prends 3 jours pour faire l'execution  ....
il ya pas une solution pour resoudre le probleme de temps ou il ya pas une autre methode pour arriver au peres_fils qui ont le meme nom ....
crdl
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
3
Merci
bonjour,
Pour gérer cette difficulté, mieux serait de créer une bdd relationnelle et d'appliquer ensuite des requêtes SQL ad hoc.

Le gain en rapidité de traitement serait alors considérable.

cantador

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 222 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
0
Merci
for i de 0 à 3000 {
  for j de 0 à tb.count   /* 30 ? */ {
    for k de 0 à tbgeneration2.count  /* 30 fois ? */ {
      for l de 0 à tbgeneration3.count /* 30 fois ? */ {
        for m de 0 à tbgeneration4.count  /* 30 fois ? */{
        } 
      } 
    } 
  } 
}

3000 * 30 * 30 * 30 * 30 2 430 000 000 iterations!
si 0.5 sec/i 337 500 Heures 14 062.5 jours = 2 008.5 semaines = 38.6 ans!si 1 sec/i 675 000 Heures 28 125 jours = 4 017 semaines = 77,3 ans!

<hr size="2" width="100%" />
Commenter la réponse de f0xi
Messages postés
6
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
19 juillet 2010
0
Merci
et alors ???
il ya une pas autre methode  ??
Commenter la réponse de anbariota
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6
0
Merci
0.5sec/iteration, ben dis-donc ! C'est des requêtes escargot ...
Tu peux eventuellement casser la boucle une fois que tu as trouvé ton bonheur, mais bon ... que ce soit 10 ou 20 ans, on est plus à dix ans près :}

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6
0
Merci
Au fait f0xi tu pourrais activer ma source que j'ai mis cette après-midi/début de soirée ?

Cordialement, Bacterius !
Commenter la réponse de Bacterius