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

Windows Forms Discussion :

Winform vs console


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Winform vs console
    Bonjour,

    je suis sur un projet qui est fait en 3 couches et qui fait plein de requetes sql server. En mode console, quand je teste les temps de reponse de mon programme, j'arrive a 500 ms. En mode winform, je cree un gridview avec un binding objet vers des des classes que j'ai crees (les memes dont je me serve pour les tests en mode console) et la j'arrive a 15 s (sans compter le temps de chargement dans le gridview qui est tres faible), ce qui est enorme. Je ne comprends pas la cause !!! Avez vous une idée sur une cause possible ?
    merci d'avance

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Le DataGridView est probablement à l'origine du problème.

    Passer en FrameWork 3.5 ou 4 permet d'améliorer les performances.

    Sinon, supprimer le binding avant les requètes puis le réaffecter.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 71
    Points : 110
    Points
    110
    Par défaut
    Salut,

    Moi j'utilise la technique de la propriété Visible.
    Avant requete, la grille à Visible = False
    A la fin la grille à Visible = True.

    Je sais pas si ce sera suffisant.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    je ne pense pas. je mesure uniquement le temps de creation de mon objet.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub btn_Rechercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Rechercher.Click
            startime = DateTime.Now
            Dim result As New ListOfXXXX
            result = ListOfXXXX.SearchListOfXXXX(Me.TextBoxKeyWords.Text)
            Dim ts As TimeSpan = DateTime.Now.Subtract(Me.startime)
            Me.ToolStripStatusLabel1.Text = " Temps passé sur " & result.Count & " requête(s) en ms : " & ts.Minutes.ToString("00") & ":" & ts.Seconds.ToString("00") & ":" & ts.Milliseconds.ToString("000")
            Dim list As New List(Of XXX)
            Dim ele As XXX
            For Each ele In result
                list.Add(ele)
            Next
            Me.ResultDataGridView.DataSource = list
        End Sub

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Tu veux dire que le contenu de ta methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListOfXXXX.SearchListOfXXXX(Me.TextBoxKeyWords.Text)
    Est EXACTEMENT le meme en WinForm qu'en console ?
    Et que tu teste avec EXACTEMENT la meme valeur de clef : (Me.TextBoxKeyWords.Text)
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Parfaitement, j'utilise la meme clef ! et j'ai fait le test sur plusieurs clefs et a chaque fois le delta en terme de temps est enorme (10 a 20 fois plus lent)

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut c'est un peu etonnant

    A priori je dirais que comme tu execute la requete dans le meme thread que le thread principal gerant l'affichage on peu comprendre un ralentissement par rappot a une compilation console qui n'as pas d'affichage a gerer

    Mais de la a parler de 10 à 20 x plus lent ca signifierait que 90 à 95 % des ressources du thread sont consacré a l'affichage

    Tu pourrais essayer d'executer

    ListOfXXXX.SearchListOfXXXX(Me.TextBoxKeyWords.Text)
    Dans un autre thread. Si ca se confime ce serait edifiant
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    J'ai pensé a un thread en arriere plan avec un background worker et j'ai deja testé et ca donne la meme chose ! c bien a ca que tu pensais ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    je veux dire par la meme chose que les temps sont equivalents entre winform en direct (sous btn_click) et backgroundworker !

  10. #10
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Franchement je pense qu'il y a un autre problème car 15 secondes pour executer un Query c'est déja un GROS Query
    Or que ce meme tres gros query puisse s'executer en 500 ms me semble bizare

    Je pense que tu devrais poster le code de
    ListOfXXXX.SearchListOfXXXX(Me.TextBoxKeyWords.Text)

    Il y a pet etre un lezard dedans !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    c'est bon j'ai trouvé mais je saurais pas expliqué ! donc si quelqu'un trouve une expolication, merci d'avance.
    donc en fait j'avait mis 5 ou 6 console.writeline (xxxxxx") par requete por suivre l'evolution et j'avais dans les 100 requetes. A priori, le process console et winform ne font pas bon menage car en virant ces console.writeline, je tombe sur les memes temps d'execution ( 500 ms ). La question maintenant est pourquoi cela est arrivé ?
    merci a tout le monde quand meme !

Discussions similaires

  1. Utiliser une winform comme console application
    Par programaniac dans le forum Windows Forms
    Réponses: 7
    Dernier message: 10/03/2009, 10h48
  2. Réponses: 1
    Dernier message: 30/04/2008, 17h47
  3. Réponses: 8
    Dernier message: 02/07/2007, 13h07
  4. [WinForms]Rediriger le flux de la console vers une listbox ou text box
    Par NicolasJolet dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 27/03/2007, 03h09
  5. Winform et console
    Par el3gans dans le forum MFC
    Réponses: 4
    Dernier message: 28/02/2006, 14h38

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