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 :

Optimiser le chargement d'une application


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut Optimiser le chargement d'une application
    Salut,

    Dans une application lié à une base de donnée, comment feriez vous pour optimiser les délais de chargement ?. je m'explique:

    Dans ma configuration actuelle, à chaque ouverture d'un form, il y'a une longue procédure de chargement des tables liées (Bcp de datagridview liés, et dataset fortement typé), ce qui fait que les formulaires mettent du temps à apparaître (entre 5 et 15s).

    j'ai pensé à une procédure exclusivement dédiée au chargement et qui chargerais toutes les tables une bonne fois au lancement de l'application, avec des objets instanciés dans des variables publiques accéssibles à toutes les classes.

    Mais j'ai pas encore essayé, je voudrais avant m'enrichir de vos multiples expériences sur le sujet.

  2. #2
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Citation Envoyé par stdebordeau Voir le message
    j'ai pensé à une procédure exclusivement dédiée au chargement et qui chargerais toutes les tables une bonne fois au lancement de l'application, avec des objets instanciés dans des variables publiques accéssibles à toutes les classes.
    Oui, dans un thread séparé. Après, mettre tout en variable publique, ce n'est peut-être pas le top. Mais avec le peu d'expérience que j'ai dans ce domaine, j'aurai fait comme çà.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    Euh, franchement, si tu peux faire autrement, n'hésites pas... C'est ce que j'avais fait sur mon application en stage, et quand mon maitre de stage l'a vu, il n'était pas très content. Son conseil c'est plutôt d'ouvrir la base de données le moins possible, de faire pleins de procédures stockées... Bref, de charger à fond la base, et de faire quelque chose de très léger du côté de .Net. Après, il y a peut-être des gens qui ont plus d'expériences en la matière...

  4. #4
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    merci roster, à propos petite question bête (fais moi grace)
    c'est quoi un thread ?

  5. #5
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    merci aussi à toi wapi gui.
    en fait le fait de charger à fonds la base comme tu dis ne change rien au problème puisqu'il faut toujours faire des appels.

  6. #6
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut

    Euh, franchement, si tu peux faire autrement, n'hésites pas... C'est ce que j'avais fait sur mon application en stage, et quand mon maitre de stage l'a vu, il n'était pas très content. Son conseil c'est plutôt d'ouvrir la base de données le moins possible
    +1...voir +1000

    Normalement, le cout d'acces a une base de donnees est assez ridicule, tout charge cote client pose le probleme de la synchro des donnees, charge le client, surcherge la base si plusieurs clients lancent leur appli au meme moment, etc...

    Dans une conf "normale", il faut ouvrir la connection le plus tard possible, la refermer le plus tot possible, et ne rapatrier que les donnees dont tu as besoin pour travailler...

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  7. #7
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Citation Envoyé par Philippe Vialatte Voir le message
    Dans une conf "normale", il faut ouvrir la connection le plus tard possible, la refermer le plus tot possible, et ne rapatrier que les donnees dont tu as besoin pour travailler...
    Dis comme çà, cela parait logique!
    Merci pour le conseil.

  8. #8
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    Donc en résumé ma solution n'est pas la bonne?

  9. #9
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Citation Envoyé par stdebordeau Voir le message
    Donc en résumé ma solution n'est pas la bonne?
    Pas la meilleure en tout cas!


    Pour répondre à ton autre question zapée par mégarde:

    Citation Envoyé par stdebordeau Voir le message
    c'est quoi un thread ?
    Threads

    Cela permet de lancer des méthodes de façon asynchrone, sans freezer l'appli.
    Mais dans le cas ou l'on ne peut savoir quelles arguments lancer, cas d'un tri dans la BD où l'on ne connait pas par avance les données à trier, cela n'a sûrement aucun interet.

  10. #10
    Membre régulier Avatar de stdebordeau
    Homme Profil pro
    Statisticien
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 120
    Points
    120
    Par défaut
    J'ai tenté une petite parade qui marche plutot bien.
    dans un module j'écris une procedure qui charge toutes les tables du dataset. cette procedure est appelé au lançement de l'application. c'est donc lent au lancement mais c'est préférable.

    ensuite je travail avec mes autres classes de manière habituel. c'est à dire que chaque form charge encore les tables dont il a besoin, mais là le chargement est plus rapide. les formulaires s'ouvre donc plus vite.

    en réalité je ne sais pas pourquoi c'est ainsi, vu que la procedure et les différents formulaires "instancient" des objets(datatable) différent. tout se passe comme si ces objets (différent normalement) pointent sur le même cache.

  11. #11
    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
    Bcp de datagridview
    Dans ce cas, c'est très probablement le remplissage des datagridview au moment ou les "binde" qui prend l'essentiel du temps.

    Si tu es en Framework 2.0, tu verras une amélioration avec le 3.5
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. [A-00] Lenteur de chargement d'une application
    Par Gabout dans le forum Modélisation
    Réponses: 7
    Dernier message: 31/01/2009, 22h59
  2. Connaître le temps de chargement d'une application
    Par fabou3377 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/06/2008, 13h17
  3. Lenteur de chargement d'une application
    Par coco dans le forum Windows Mobile
    Réponses: 3
    Dernier message: 03/03/2007, 01h03
  4. Tracer le chargement d'une application ?
    Par VinnieMc dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 25/07/2006, 09h49

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