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

Delphi Discussion :

Déterioration de performances


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut Déterioration de performances
    Bonjour,

    Résumé du problème
    Je suis créateur et administrateur d'une application développée en Delphi qui fonctionne sur un réseau interne et il m'arrive d'être confronté à de fortes baisses de performances que je n'arrive pas à expliquer.

    Contexte
    Delphi7 Entreprise / Windows XP pro SP2

    Vue générale de l'application et détail du problème :

    Un exécutable principal charge dynamiquement des DLL puis demande à chacune d'elle de récupérer des informations dans un "TStream". C'est cette seconde opération qui prend environ 10 fois plus de temps certains jours (comme aujourd'hui) lorsque le "réseau" société n'est pas très en forme.

    Là où je ne comprends pas, et c'est pourquoi je sollicite votre aide, c'est que la récupération des informations depuis le "TStream" par les DLL n'implique pas, à ma connaissance, le réseau !

    A titre de comparaison, d'autres applications utilisées sur mon poste (et donc avec le même état de réseau) perdent beaucoup moins en efficacité.

    Cela me donne à penser qu'il y a peut être un réglage à faire, non pas au niveau du système, mais dans les options de compilation ou d'édition de liens Delphi.

    Merci d'être allé au bout du message

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 182
    Par défaut
    est-il possible qu'un de ces TStream soit en réalité un TFileStream, qui accéderait à un fichier situé sur une autre machine? Pour vérifier cette hypothèse, j'utiliserais filemon ou procmon http://www.microsoft.com/technet/sys...s/default.mspx pour regarder quels accès fichiers fait cette application.

    Bruno
    mon blog - mon site web

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut Tstream chargé dans l'application ppale
    Pour détailler un peu la chose :

    dans l'application principalle il y a le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        stream:TDataStream;
        stream:=TDataStream.create;
        stream.loadFromFile(FilePath)
    ensuite les fonctions de chargement de chaque DLL sont appelées avec le
    paramètre stream:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure LoadFromDLL(const stream:TStream)
    Les performances de l'instruction"stream.loadFromFile(FilePath)" ne sont pas en cause, c'est ensuite au fur et à mesure du découpage du "stream" par les différentes DLL qu'on a une explosion des temps de traitement.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut Suite sur "déterioration de performances"
    J'observe un phénomène tout à fait étonnant :

    scénario je me connecte sur mon poste de travail à partir d'une autre en utilisant la fonctionnalité "Connexion du bureau à distance" de windows XP,
    et j'obtiens de bien meilleures performances avec mon application qu'en la lançant directement depuis mon poste !!!

    Je suis impatient de connaitre vos réactions.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut
    Tu crée des stream, mais est-ce que tu les "Free" et les "Destroy" quand tu ne les utilise plus ?
    J'ai eu ce probléme avant de passer mon logiciel en réseau, à chaque itération, c'était 50 Mo de RAM qui étaient occupés...

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut Mémoire bien libérée
    Oui ! le code en plus détaillé est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure charge(const filePath:string);
    var
      stream:TDataStream;
    begin
      stream:=TDataStream.create;
      try
        stream.loadFromFile(FilePath) ;
        ...
        LoadFromDLL(stream)
        ...
      finally
        FreeAndNil(stream);
    end;
    (FreeAndNil est une fonction bien pratique de l'unité SysUtils)

    Sinon je crois que le fait que l'application tourne plus vite en passant par une connexion du bureau à distance devrait mettre la puce à l'oreille des spécialistes XP....

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

Discussions similaires

  1. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39
  2. Performance xml
    Par MicKCanE dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/07/2003, 06h41
  3. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18
  4. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37
  5. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 11h41

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