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

WinDev Discussion :

Lenteur instanciation classe depuis migration projet WD12 à WD20


Sujet :

WinDev

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Points : 110
    Points
    110
    Par défaut Lenteur instanciation classe depuis migration projet WD12 à WD20
    Bonjour,

    Nous sommes en train de migrer notre projet de la version 12 à 20.
    En version 20 elle fonctionne mais nous avons des soucis de lenteur d'exécution par rapport à la version 12, d'un rapport de 4. C'est énorme !
    Par exemple, en version 12, une fonction de l'application s’exécute en 2s mais en version 20 il en faut plus de 8s.
    L'analyseur de performance sur les 2 versions révèle un écart important sur le constructeur d'une classe.
    En V12 : 329 ms
    En V20 : 5s 700ms


    vlCdeCliDet est composé de nombreux membres dont des classes qui sont aussi composées de classe .....
    J'ai supprimé le code des nombreux champs que l'on récupère pour plus de lisibilité.
    C'est à l'instanciation de vlCdeCliDet : ArrayAdd(vlListeCdeCliDet,vlCdeCliDet), qu'il y a une différence énorme (voir ci dessus).

    Ci dessous le code :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    clCdeCliDet est une Classe
    hérite de clObjetBO
    PUBLIC
    mIdCdeCliDet is int
    mIdCdeCliEnt is int
    mIdArtCli is int
    mDelai is Date
    mQte is int
    mPtCons is string
    mCommentaire is string
    mPrix is numeric
    mStatut is int
    mTypePrix is int
    mTypeBesoin is int
    mPrixModifie is boolean
    mQteCde is int
    mEtat is int
    mNoVI is string
    mRangVI is string
    mNoEchange is string
    mRangEchange is string
    mLigne is string
    mDateEngagement is Date
    mCodeTeinte is string
    mNoRAN is string
    mITTransport is string
    mDateHeureDep is DateTime
    mDateHeureArr is DateTime
    mDateHeureSyncro is string
    mIdProd is string
    mVIN is string
    mRoutageUM is string
    mEtatEditionUC is int
    mEtatEditionUM is int
    mHeureEngagement is Time
    mEDI is boolean
    mAnnotation is string
    mIdTeinte is int
    mIdOfEnt is int
     
    mCdeCliEnt is clCdeCliEnt
    mArtCli is clArtCli
    mOfEnt is clOFEnt
    mTeinte is clTeinte
     
    mDelaiAn is int
    mDelaiSem is int
     
    mDossierPrimaire is string
    mIdDossierPrimaire is int
    mLivrerBL is boolean
    mQtePlannifie is int
    mIdEtiqUc is int
    mIdEtiqUm is int
     
    CONSTANT
    cstStatutFerme=1
    cstStatutPrevisionnel=2
    FIN
    FIN
     
     
    Procedure RecupererCdeCliDetParPeriode(LOCAL vlDelaiDeb is Date, LOCAL vlDelaiFin is Date)
     
    vlQuery is string
    vlSQL is Data Source
    vlCdeCliDet is clCdeCliDet
    vlListeCdeCliDet is dynamic array of 0 clCdeCliDet
     
    vlQuery="SELECT CDD.IDCDECLIDET"+CR+...
    ",CDD.IDCDECLIENT"+CR+...
    ",CCE.NUMCDE"+CR+...
    ",CL.IDCLIENT"+CR+...
    ",CL.RAISONSOCIALE"+CR+...
    ",CL.CPTTTC"+CR+...
    ",CCE.IDCLIPTDECH"+CR+...
    ",CPD.GARE"+CR+...
     
    "from CDECLIDET CDD"+CR+...
    "inner join CDECLIENT CCE on CDD.IDCDECLIENT=CCE.IDCDECLIENT"+CR+...
    "inner join CLIENT CL on CCE.IDCLIENT=CL.IDCLIENT"+CR+...
    "inner join CLIPTDECH CPD on CCE.IDCLIPTDECH=CPD.IDCLIPTDECH"+CR+...
     
    "where CDD.DELAI BETWEEN '"+vlDelaiDeb+"' AND '"+vlDelaiFin+"'"
     
    HExecuteSQLQuery(vlSQL,:mConnexion,hQueryWithoutCorrection,vlQuery)
    IF HError()
    ExceptionPropagate()
    ELSE
    HReadFirst(vlSQL,hNoRefresh)
    IF HOut(vlSQL) THEN
    RESULT(Null)
    ELSE
    WHILE NOT HOut(vlSQL)
    //Gare
    vlCdeCliDet:mCdeCliEnt:mCliPtDech:mIdCliPtDech=vlSQL.IDCLIPTDECH
    vlCdeCliDet:mCdeCliEnt:mCliPtDech:mGare=vlSQL.GARE
    //Client
    vlCdeCliDet:mCdeCliEnt:mClient:mIdClient=vlSQL.IDCLIENT
    vlCdeCliDet:mCdeCliEnt:mClient:mRaisonSociale=vlSQL.RAISONSOCIALE
    vlCdeCliDet:mCdeCliEnt:mClient:mCptTTC=vlSQL.CPTTTC
    //CdeCliEnt
    vlCdeCliDet:mCdeCliEnt:mIdCdeCliEnt=vlSQL.IDCDECLIENT
    vlCdeCliDet:mCdeCliEnt:mNumCde=vlSQL.NUMCDE
     
    ArrayAdd(vlListeCdeCliDet,vlCdeCliDet)
    HReadNext(vlSQL)
    END
    END
    END
     
    RESULT(vlListeCdeCliDet)
    MERCI

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 247
    Points : 12 883
    Points
    12 883
    Par défaut
    Bonjour,
    Quel est le code du constructeur de la classe clCdeCliDet ?
    Que dit l'analyseur de performance ?
    Qu'est-ce que ça donne avec un tableau d'objets dynamiques ?

    Tatayo.

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Il n'y a pas de code dans le constructeur et destructeur.
    L'analyseur de performance met en évidence la lenteur de arrayadd mais c'est pas arrayadd qui est lent mais l'instanciation de clCdeCliDet pour ajouter un élément dans la tableau dynamique.
    En WD12 c'est 4x plus rapide ! Bizarre

    Il y a eu un changement depuis WD12 sur la gestion de l'allocation mémoire ?


    MERCI

Discussions similaires

  1. [WS 2008] Lenteur Internet depuis migration Windows Server 2008
    Par aorelian dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 25/08/2011, 12h56
  2. Classe inaccessible depuis un projet Silverlight
    Par cyberbobby dans le forum Windows Communication Foundation
    Réponses: 6
    Dernier message: 25/05/2009, 15h33
  3. [WD12] Lenteur de chargement d'un projet
    Par stounouslous dans le forum WinDev
    Réponses: 2
    Dernier message: 06/11/2008, 10h22
  4. Réponses: 2
    Dernier message: 26/11/2007, 12h22
  5. Lenteur requete depuis migration
    Par pingoo78 dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/10/2007, 14h32

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