IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web avec .NET Discussion :

Question d'optimisation : Plein de condition, ou plein de boucle ?


Sujet :

Développement Web avec .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Question d'optimisation : Plein de condition, ou plein de boucle ?
    Salut a tous !!

    Alors voila :
    J'ai un fichier Excel de +- 400000 lignes...
    Et je dois trier les entrées en fonction de certain champs, puis faire une feuille Excel pour chaque type sorti de cette manière.

    Voici un exemple :
    Je dois faire une feuilles avec toutes les entrées qui ont pour valeur pour la premiere colonne "coucou";
    Je dois faire une autre feuilles avec toutes les entrees qui ont pour valeur la 3eme colonne "les amis";
    etc...avec 10 colonnes...

    Donc voici ma question :
    Il vaut mieux répéter 10 boucle sur les 400000 lignes en faisant une condition par boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    For i =1 To 400000
        If Cell(i, 1) = "" Then
            RangerDansFeuille1()
        End If
    Next
    For i =1 To 400000
        If Cell(i, 2) = "" Then
            RangerDansFeuille2()
        End If
    Next
    For i =1 To 400000
        If Cell(i, 3) = "" Then
            RangerDansFeuille3()
        End If
    Next
    For i =1 To 400000
        If Cell(i, 4) = "" Then
            RangerDansFeuille4()
        End If
    Next
    For i =1 To 400000
        If Cell(i, 5) = "" Then
            RangerDansFeuille5()
        End If
    Next
    .
    .
    .
    Ou bien faire une boucle et tester toute les conditions sur la ligne selectionnee par la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    For i = 1 To 400000
        If Cell(i, 1) Then
            RangerDansFeuille1()
        End If
        If Cell(i, 2) Then
            RangerDansFeuille2()
        End If
        If Cell(i, 3) Then
            RangerDansFeuille3()
        End If
        If Cell(i, 4) Then
            RangerDansFeuille4()
        End If
        .
        .
        .
    Next
    ?

    Cordialement,
    Rhoblik.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    1er solution = 10x40.0000 boucles
    2ème solution = 40.000 boucles

    donc la 2ème

    si tu ne peux avoir qu'une valeur à la fois (donc jamais Col(i,1) et Col(i,2) rempli)tu peux utiliser des else If
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  3. #3
    Membre habitué
    Inscrit en
    Février 2012
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 121
    Points : 157
    Points
    157
    Par défaut
    Pour te donner une idée plus concrète, je te recommande l'utilisation de la classe stopwatch, qui te permettra de chronométrer et ainsi d'avoir une idée sur les performances de tes algos.

  4. #4
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Moi je te donne une 3ème piste.

    Connecte toi à ton fichier excel comme si c'était une base de données Access et tu fais des requêtes.

    Niveau rapidité, tu y gagneras certainement.

    Voilà un lien pour t'aider

    http://www.beansoftware.com/NET-Tuto...-Database.aspx
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Salut a tous !!

    Et bien j'ai finalement adopter la 2eme solution ^^'

    Bien sur, je vous remercie grandement pour vos astuces.

    bossun,
    Je vais regarder ça avec attention, merci.

    Rhoblik.

    Je passe donc ce topique en résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plusieurs sous-programmes ou un programme avec plein de conditions ?
    Par svagrim dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 09/07/2007, 19h26
  2. [XNA] Question d'optimisation de chargement
    Par Myth_Titans dans le forum XNA/Monogame
    Réponses: 4
    Dernier message: 02/02/2007, 19h11
  3. Questions d'optimisation de requêtes
    Par beberd dans le forum Requêtes
    Réponses: 30
    Dernier message: 18/01/2007, 15h51
  4. question conceptuelle optimisation.
    Par mandrake_of_mandregas dans le forum Access
    Réponses: 1
    Dernier message: 29/12/2005, 10h07
  5. :?: question d'optimisation!
    Par Stopher dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/06/2004, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo