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

Services Windows Discussion :

Performance de code exécuté dans un service


Sujet :

Services Windows

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut Performance de code exécuté dans un service
    Bonjour à tous,

    Mon problème est assez complexe et j'espère que quelqu'un à déjà rencontré le même.

    J'ai un application développée en VB6 qui contient une fonctionnalité qui fait des transformations de documents XML par des feuilles XSL.

    Cette même fonctionnalité (qui est dans une DLL) peut être utilisée dans une autre application sous forme de service Windows ce qui permet à nos utilisateurs de planifier ces transformations et que celles-ci soient automatiquement réalisées.

    Le problème est dans le temps d'exécution de ces transformations. En faisant des tests je me suis aperçu qu'une transformation était 20 à 40 % plus rapide dans l'application client lourd que dans le service.

    Le code est exactement le même, le résultat aussi, seul le temps change.

    Si quelqu'un à une idée d'où cela peut-il venir ?

    J'ai essayé de changer dans le gestionnaire des tâches la priorité du service mais cela ne change rien.

    Merci à tous
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

  2. #2
    Expert confirmé Avatar de ed73170
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2009
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2009
    Messages : 765
    Points : 5 522
    Points
    5 522
    Par défaut
    Bonjour,

    Normalement il n'y a aucune raison pour que le même code s'exécute à une vitesse différente dans un client lourd que dans un service.

    Es-tu certain que toutes les conditions de l'exécution sont identiques ? J'aurais tendance à penser que ça peut venir du temps d'accès aux fichiers si par exemple tu as fait tes tests sur un disque local et que le service utilse un disque réseau, voire pire un serveur délocalisé. J'ai eu ce cas dernièrement sur des gros volumes de données et la différence était très importante.

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut
    J'ai fait plusieurs tests en utilisant des librairies différentes pour les transformations XSL :
    - Altova (que nous utilisons déjà)
    - MSXML,
    - SAXON

    Dans tous les cas la transformation est plus lente en service qu'en client lourd.

    Pour un peu plus d'info, le contenu XML, XSL, et le XML transformé ne sont pas dans des fichiers mais dans des variables (et sont créés dynamiquement) donc directement en mémoire. Aucun fichier que se soit XML ou XSL n'est chargé donc pas de différences d'accès disque.

    La durée de la transformation est calculée à l'aide de la fonction GetTickCount qui renvoi le nombre de millisecondes depuis le démarrage de la machine. La fonction est appelée avant et après la transformation, la durée est donc la différence des 2. Cette fonction est appelée juste avant et juste après la ligne de code qui transforme donc les conditions d'exécution sont les mêmes car il n'y a qu'une ligne de code.

    Après je pense que la fonction qui transforme le XML à l'aide d'un XSL doit être assez complexe et doit créer des instances d'objets en mémoire malheureusement il m'est impossible d'avoir le contenu des fonctions qui sont dans des librairies propriétaires (sauf SAXON).

    Est-ce que la création des objets ou les accès mémoires peuvent être plus long en service ? Cela reste pour l'instant un mystère...

    Cela reste pour l'instant un mystère...
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

Discussions similaires

  1. [2008] Code personnalisé dans Reporting Services
    Par Valochette dans le forum SSRS
    Réponses: 0
    Dernier message: 22/03/2011, 14h54
  2. Priorité d'exécution dans le code
    Par pkrvz dans le forum VBA Access
    Réponses: 6
    Dernier message: 29/03/2008, 08h12
  3. Réponses: 7
    Dernier message: 11/03/2007, 09h35
  4. Réponses: 1
    Dernier message: 04/01/2007, 22h52
  5. Connaitre le numéro de ligne exécuté dans le code
    Par heddicmi dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/10/2006, 16h15

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