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

Dotnet Discussion :

Optimiser chargement Assemblies


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut Optimiser chargement Assemblies
    Bonjour,

    J'ai une application non managé qui fait appel à des .exe .NET .

    J'ai une l'atrange suprise de constater que ces executables .NET se lancent largement plus vite quand je laisse VS2005 tourner.

    Comprends pas bien ...

    Comment VS2005 fait t-il pour que mon pgm qui n'a rien à voir avec lui lance mes applis .NET 2X plus vite ?

    D'avance merci pour vos idées ,
    TSalm

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    La raison principale des lenteurs aux démarrages des applications en .net sont la compilation JIT des différentes assemblies.
    Lorsque tu as vs2005 qui tourne, certaines de ces assemblies sont déjà en mémoire, ce qui évite à l'environnement d'avoir à complètement les recharger.

    Si tu veux accélérer tes applications, tu peux pré-générer une image native à l'aide de ngen, mais cela a aussi des inconvénients non négligeables.

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    A mon avis, c'est simplement dû au fait que VS fait beaucoup appel aux assemblies .NET, elles sont donc déjà chargées en mémoire quand tu lances ton programme, tu gagnes donc en rapidité vu qu'il ne reste plus que ton propre assembly à charger.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut
    Citation Envoyé par _skip Voir le message
    La raison principale des lenteurs aux démarrages des applications en .net sont la compilation JIT des différentes assemblies.
    Lorsque tu as vs2005 qui tourne, certaines de ces assemblies sont déjà en mémoire, ce qui évite à l'environnement d'avoir à complètement les recharger.
    Mais c'est pourtant toujours le même exe managé qui est lancé.
    Pourquoi DOTNET ne maintient t-il pas un cache de ce qu'il a compilé ?

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par TSalm Voir le message
    Pourquoi DOTNET ne maintient t-il pas un cache de ce qu'il a compilé ?
    Parce que ça n'a pas de sens
    Qu'est ce que veut mettre en cache ? Une assembly ? Une méthode ? Une classe ?
    Comment veux tu différencier un élément du cache d'un autre ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Parce que ça n'a pas de sens
    Qu'est ce que veut mettre en cache ? Une assembly ? Une méthode ? Une classe ?
    Comment veux tu différencier un élément du cache d'un autre ?
    il y a un cache des assemblies compilé, il me semble , la clef utilisé est la signature de l'assembly. D'ailleur as tu fait le test de signer ton app ?

    Et surtout ton app fait-elle appelle à des bases de données ? ou autre compo externe ?

  7. #7
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Le global assembly cache oui.
    La seule véritable manière d'améliorer la vitesse DE PREMIERE EXECUTION d'une form ou d'un algo c'est d'utiliser ngen. Avec prudence.

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par dev01 Voir le message
    il y a un cache des assemblies compilé, il me semble , la clef utilisé est la signature de l'assembly. D'ailleur as tu fait le test de signer ton app ?

    Et surtout ton app fait-elle appelle à des bases de données ? ou autre compo externe ?
    Oui mais là on parle de précompilation. Je répondais dans le cadre d'une problématique de garder en cache ce qui est jitté.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  9. #9
    Membre éclairé Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    A mon avis, c'est simplement dû au fait que VS fait beaucoup appel aux assemblies .NET, elles sont donc déjà chargées en mémoire quand tu lances ton programme, tu gagnes donc en rapidité vu qu'il ne reste plus que ton propre assembly à charger.
    J'ai fait un test en lançant en arriére plan un assemblie qui utilise les mêmes assemblies, et effectivement, c'est plus performant, mais.... pas autant que si je fait tourner VS2005

Discussions similaires

  1. probleme chargement assembly
    Par jocou dans le forum Windows Forms
    Réponses: 6
    Dernier message: 04/03/2010, 15h15
  2. Optimisation chargement fichier xml
    Par djspank dans le forum Linq
    Réponses: 9
    Dernier message: 11/12/2009, 12h36
  3. erreur chargement assembly
    Par samir1985 dans le forum Débuter
    Réponses: 7
    Dernier message: 10/06/2009, 20h18
  4. ADO.NET Optimisation chargement informations
    Par Pfeffer dans le forum ASP.NET
    Réponses: 8
    Dernier message: 28/03/2008, 12h43
  5. [2.0] Optimisation chargement UserControl
    Par jbourgeais dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/02/2007, 16h30

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