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 6 et antérieur Discussion :

[VB6/2008R2] Performances d'affichage ?


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 243
    Points : 328
    Points
    328
    Par défaut [VB6/2008R2] Performances d'affichage ?
    Bonjour,

    Je rencontre une différence inexpliquée de performances d'une appli. vb6 entre certaines configurations.
    Ainsi, pour une config. en particulier, des ralentissements sont apparus après passage de 2003 (physique) à 2008r2 virtualisé.
    Après avoir regardé du côté du serveur SQL, du paramétrage de la VM, du réseau, de la config. TSE et d'autres encore, la machine a été dé-virtualisée mais même si la situation s'est un peu améliorée, c'est pas encore ça.

    Les pistes s'épuisant et au vu de la compléxité de l'appli, j'ai fait deux programme identiques et hyper complexes [comme vous pouvez le constater pour la version vb6] en vb6 & vb.Net/WinForm, histoire de déblayer un peu et voir si vb6 était en cause.

    Les deux config. utilisées sont les suivantes :
    * "Référence" : VM 2008R2 x64 sur monoproc. Xeon X3470 2.93Ghz, configuré avec 2 cpu, 2Go de RAM.
    * "Cible" : 2008R2 sur Optéron, 12Go RAM, Bipro 4 coeurs (soit 16 avec l'HT ou équivalent chez AMD). Je n'ai pas accès à la config. pour l'instant pour avoir des données plus précises (de mémoire, la carte vidéo est une ATI 1000 avec 64Mo de ram).
    * Le driver de la carte vidéo est à priori le même sur les deux configs. (driver installé par l'OS et de version identique)

    Et là, surprise, cela semble lié à l'affichage. Si le programme n'affiche pas l'itération en cours, les chiffres sont très proches mais dès qu'elle est affichée, les 1 à 2s sur la VM deviennent 8 ou 9 sur la machine physique pour une boucle de 100000 par exemple. Que l'on force l'affinité du process sur un seul Core ou que l'OS gère tout seul, cela ne change rien.

    Le programme VB.Net (le code est le "plus" identique possible) retourne par contre des temps similaire dans les deux environnements (tout en étant meilleur sur la machine "cible").

    J'ai donc l'impression que cela vient de l'affichage de vb6 (la version .Net est en WinForm pour justement rester le plus proche possible au niveau des dll de bas niveau utilisées pour gérer l'affichage) sur cet environnement mais à part çà, je sèche.

    Donc, pour finir, j'ai deux questions :
    * Est-ce que quelqu'un à déjà rencontré ce genre de problème ? J'ai cherché sur google mais soit mes mots clefs ne sont pas les bons, soit je suis le seul dans ce cas
    * Avez-vous des pistes à me proposer ? J'ai bien penser à mettre une "vraie" CG sur le serveur "cible" mais :
    1) sur le serveur VM, c'est aussi une carte intégrée
    2) je ne gère pas la machine "cible" et je ne sais pas si l'intégrateur à une carte à mettre dedans...

    Merci d'avance,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
      ...déclarations...
     
      imax = Val(txtMax.Text)
      af = (chkAffichage.Value = vbChecked)
      de = (optDoEvents.Value)
      rf = (optRefresh.Value)
      rf2 = (optRefresh2.Value)
      md = (chkModulo.Value = vbChecked)
     
      For i = 1 To imax
        If Boucle Then
          s = ""
          For j = 1 To 100
            s = "azertyuiopqsdfghjklmwxcvbn"
          Next j
        End If
        If md Then mdok = ((i Mod 10) = 0) Else mdok = True
        If mdok Then
            If af Then lblCpt.Caption = CStr(i)
            If de Then
              DoEvents
            Else
              If rf Then
                Me.Refresh
              Else
                If rf2 Then lblCpt.Refresh
              End If
            End If
        End If
      Next i
      lblCpt.Caption = CStr(i)

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 243
    Points : 328
    Points
    328
    Par défaut
    Bon, nous pensons avoir trouvé (du moins en grande partie).

    En ce qui concerne l'optéron qui nous nargue, il semble que cela vienne de l'économie d'énergie qui était activée dans le BIOS et accessoirement du soft de prise de commande qu'on utilise pour faire nos tests (dans le cas présent) : Décocher l'économie d'énergie divise les temps par deux si le programme de test affiche l'itération en cours et demander à un utilisateur de lancer directement le test sans que la prise de commande ne soit activée les divise aussi par deux.

    Je marque le fil en résolu mais, il reste quand même des interrogations :
    • Pourquoi ces paramètres de bios ont-ils un tel effet sur un programme VB6 et pas sur l'équivalent VB.Net ?
    • Pourquoi cela a-t-il un effet si le programme affiche l'itération courante et aucun si il ne le fait pas ?
    • Est-ce que ce paramétrage sera valide aussi sur d'autres machines de prod. ?
    • Pourquoi la machine physique normalement plus puissante (CPU plus récente - pas le même fondeur mais bon quand même , plus de coeurs, 2 CPU au lieu d'une) bien qu'un peu moins rapide en fréquence soit encore un peu plus lente que notre VM de test, que ce soit avec le programme de test ou le programme réel ?


    Pour ceux que cela intéresse :

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

Discussions similaires

  1. User control et performance d'affichage
    Par dkmix dans le forum Windows Forms
    Réponses: 0
    Dernier message: 19/03/2012, 12h04
  2. Améliorer les performances d'affichage d'un rapport
    Par kssillati dans le forum SSRS
    Réponses: 2
    Dernier message: 09/08/2011, 10h39
  3. Performance d'affichage de dessin
    Par Mik ArBer dans le forum 2D
    Réponses: 6
    Dernier message: 25/06/2007, 23h47
  4. [VB6] Comment modifier l'affichage au sein d'un Webbrowser
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 16/12/2005, 14h06
  5. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00

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