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 :

Mise en cache du code ?


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Par défaut Mise en cache du code ?
    Bonjour à tous,

    Je suis débutant avec .NET et C# et je suis confronté à un phénomène un peu étrange pour moi.

    J'ai une application qui parcours récursivement un répertoire à la recherche de fichiers, et extrait des informations sur les fichiers trouvés. La recherche se fait dans un thread dédié, et une progress bar me permet de voir l'avancement du travail.

    Lorsque je lance mon application j'ai une certaine vitesse d'exécution. Mon problème et que si je la relance une nouvelle fois, le temps d'exécution sera 4 ou 5 fois plus rapide...

    Je ne comprend pas comment expliquer cela. C'est assez gênant pour moi actuellement car je souhaiterai faire des benchs sur mon code. Et si entre 2 exécution j'ai déjà pas du tout la même vitesse c'est pas évident de confronter les résultats.

    Merci d'avance pour m'éclairer sur ce problème de vitesse,

    Jérémy

  2. #2
    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
    Salut .

    Ton "problème" vient du mode de fonctionnement de Dotnet.

    En effet comme tu le sais surement dotnet est un langage managé, c'est a dire qu'il y a un environnement d'exécution qui s'occupe de charger ton app, de vérifier la sécurité, les dépendances et ainsi de suite. De plus les apps .NET (comme Java d'ailleur) ne sont pas compilé en natif mais en IL (Intermediate Language). L'environnement d'exécution en plus de faire tout ce qui est marqué au dessus s'occupe de compiler le code au fur et à mesure qu'il est appelé. C'est a dire que si tu as 3 fonctions et que ton programme s'éxécute f1 -> f2 -> f3 alors le Fx (Framework) va compiler la fonction 1 en natif puis va l'exécuter puis va compiler f2 puis l'éxécuter et ainsi de suite. C'est ce que l'on appele la compilation Just In Time (JIT pour les intimes). Bien mais ce n'est pas l'optimisation .NET ne s'arrete pas la et c'est la ou ça devient intéressant pour toi . Une fois qu'un programme a des parties compiler en natif, celles ci sont stocké (temporairement il semblerait) afin de ne pas avoir à les recompiler. Ce qui fait que ton programme tourne plus vite vu que la phase de compilation JIT n'est plus faite, c'est du natif qui s'éxécute.

    Il faut quand même noter que ce comportement du Fx est assez difficile à comprendre et à prévoir, les changements d'environnement Windows et autre peuvent influer sur tout le bazard ...

  3. #3
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Par défaut
    C'est possible de paramétrer une application C# pour éviter une execution JiT ?

    Merci,
    Florian

  4. #4
    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 Etanne
    C'est possible de paramétrer une application C# pour éviter une execution JiT ?

    Merci,
    Florian
    Salut.

    tu peux "surcompiler" ton app avec ngen ce qui te donnera un exécutable (presque) natif mais à part ça ..

Discussions similaires

  1. [Forum] Mise en cache
    Par Jukien dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 16/08/2006, 15h41
  2. Empêcher la mise en cache
    Par Huntress dans le forum Langage
    Réponses: 4
    Dernier message: 30/03/2006, 11h54
  3. Mise en cache d'une page
    Par clad523 dans le forum ASP
    Réponses: 1
    Dernier message: 06/03/2006, 11h44
  4. Empêcher la mise en cache des images
    Par oranoutan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 15/02/2006, 11h49
  5. mise en cache du navigateur
    Par littleqi dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2005, 15h18

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