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

VB.NET Discussion :

Optimisation de mon projet


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut Optimisation de mon projet
    Bonjour,
    il y a quelques mois je me suis lancé dans un projet, créer un contrôle parental. Malgré quelques bugs à corriger, toutes les fonctions marchent. Le problème c'est qu'il prend quand même pas mal de ressources. Voici le site pour vous montrer ses fonctions

    Je dois donc l'optimiser, le problème c'est que je ne sais absolument pas comment faire, j'ai appris par moi même la programmation et donc j'ai surement pris des mauvaises habitudes et le code est fait dans ma logique qui n'est pas forcément la bonne.
    Voilà si quelqu'un peut m'aider à l'optimiser le plus possible. Je vous l'enverrai par message privé.
    Merci.
    Clément.

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour, as-tu essayé d'exécuter un profileur ? Sur le net on peut encore trouver celui d'Eqatec qui est gratuit (racheté depuis par Telerik si je ne m'abuse, pour être transformé en JustTrace payant). Tu verras ainsi quelle partie de ton code consomme le plus de CPU.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut
    Salut DonQuiche,
    j'avais déjà essayé d'utiliser l'analyseur de performances de Visual Studio mais je n'arrive pas à comprendre comment cela fonctionne.
    J'ai essayé ton programme mais j'ai que des "live developper reports" et je n'arrive pas à les analyser.
    Je précise que j'ai Visual Studio 2013 Ultimate donc j'ai tout les outils d'analyse si vous m'expliquez comment les utiliser ! Et j'aimerais vraiment savoir les utiliser d'ailleurs
    Merci de votre aide !

  4. #4
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Concernant le profileur EQATEC nous ne devons pas avoir la même version ou alors je ne vois pas de quoi tu parles. Concernant Visual Studio, Microsoft fournit déjà une documentation et des tutoriels, je ne pourrais pas faire mieux.

    Quoi qu'il en soit le but est d'obtenir une liste des méthodes appelées avec le pourcentage du temps d'exécution passé dans chacune d'entre elles, depuis la racine de la pile d'appels à 100% jusqu'à chaque sous-fonction. Une fois que tu auras réussi à obtenir ça il est trivial de repérer les méthodes anormalement gourmandes et je pourrai t'aider à comprendre pourquoi.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut
    Je vais étudier les outils que fournit Microsoft, je t'enverrai un rapport dès que possible. Merci encore pour ton aide

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut
    Voilà je viens de générer le rapport, donc d'après ce que je comprends, une partie du processeur est utilisé afin de lire les fichiers textes qui se trouvent sur le PC et qui sont assez grand (plus de 25 MO le fichier) et une autre partie pour afficher le contenu dans les listbox (fonction appelante Main)
    Je t’envoie le rapport par MP pour que tu puisse l'étudier.
    Merci.

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    Citation Envoyé par CLeBeR Voir le message
    Le problème c'est qu'il prend quand même pas mal de ressources.
    processeur ? ram ? disque ?
    combien sur quelle machine ?

    pour le processeur il y a le system.diagnostics.stopwatch qui permet de connaitre le temps d'exécution d'une partie de code, permettant donc de détecter ce qui prend du temps, et ensuite on peut réfléchir comment l'optimiser (il y a toujours plusieurs manières d'écrire quelque chose)

    concernant la ram, il faut bien penser à disposer tout ce qui est disposable pour éviter les fuites, mais sinon ca peut etre normal que l'appli prenne beaucoup de ram vu que le gc passe on ne sait quand
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    processeur ? ram ? disque ?
    combien sur quelle machine ?

    pour le processeur il y a le system.diagnostics.stopwatch qui permet de connaitre le temps d'exécution d'une partie de code, permettant donc de détecter ce qui prend du temps, et ensuite on peut réfléchir comment l'optimiser (il y a toujours plusieurs manières d'écrire quelque chose)

    concernant la ram, il faut bien penser à disposer tout ce qui est disposable pour éviter les fuites, mais sinon ca peut etre normal que l'appli prenne beaucoup de ram vu que le gc passe on ne sait quand
    Salut,
    Processeur : i3-540 et consommation de 25%
    RAM : 8 GB et consommation de 300 MO
    En revanche je ne comprends pas ta phrase
    disposer tout ce qui est disposable pour éviter les fuites
    .
    Merci.

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    la plupart des classes du framework sont codées en .net, la mémoire est libérée automatiquement quand on utilise plus une instance

    par contre certaines classes n'ont pas été redéveloppée et utilise des fonctionnalités de windows
    pour ces classes la mémoire allouée est faite par windows, on peut alors préciser qu'on veut libérer la mémoire

    ces classes implémentent IDisposable, c'est le cas par exemple de filestream, image, DbConnection, etc...
    si tu as un filestream il faut donc faire .dispose quand tu n'en as plus besoin

    il y a aussi le mot clé using qui permet d'être sûr que dispose est appelé, tel un try finally

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    using b as new system.drawing.bitmap(400,400)
      ' création d'une image
    end using
    par exemple y en a qu'on essayé un boucle où ils créent des images, rapidement il y a un outofmemoryexception
    en rajoutant le .dispose dans la boucle pas de soucis, la mémoire prise par l'appli n'augmente pas
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Du c dasn mon projet C++
    Par chronos dans le forum MFC
    Réponses: 7
    Dernier message: 07/02/2005, 14h49
  2. [FLASH MX] Incorporer un swf dans mon projet
    Par Toutouffe dans le forum Flash
    Réponses: 2
    Dernier message: 19/01/2005, 12h04
  3. [Système d'aide] Lier mon *.hlp à mon projet
    Par termerair dans le forum MFC
    Réponses: 2
    Dernier message: 18/01/2005, 13h39
  4. Choix d'un SGBDR pour mon projet: Interbase?
    Par super16 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 09/07/2004, 08h15
  5. Réponses: 5
    Dernier message: 05/06/2004, 13h12

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