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

Signaler
Messages postés
6
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
19 juillet 2010
-
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
-
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

5 réponses

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
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
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
30
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%" />
Messages postés
6
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
19 juillet 2010

et alors ???
il ya une pas autre methode  ??
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
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 !
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Au fait f0xi tu pourrais activer ma source que j'ai mis cette après-midi/début de soirée ?

Cordialement, Bacterius !