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

VBA Access Discussion :

Question de performance


Sujet :

VBA Access

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Question de performance
    Bonjour à tous

    Je me pose une question de performance pure.
    Je vais tenter de décrire mon process au plus simple.

    J'ai rangé dans une table des messages SWIFT. Cette table est faite de 6 champs :
    - ID
    - NomFichier : qui contient le nom du fichier du message
    - DateIntegration : qui conteint la date complète de l'intégration du messae SWIFT
    - SWIFTContent : qui conteint le contenu du messae SWIFT qui présent en 1 et 9 Ko. C'est un champ Mémo
    - ExtractionData : booléen pour indiquer que j'ai extrait mes données de ce message SWIFT
    - Date Extraction : date de l'extraction des données

    Voilà, j'ai une base et ensuite je peux détruire mes fichiers, je suis tranquille.

    Puis j'ai fait une deuxième table pour avoir des données basiques sur le Message SWIFT, je procédère par extraction de morceau de texte à partir du champ Mémo de la première table.
    Pour cela fait des Function auxquelles je passe le contenu du champ Mémo par un paramètre String.

    Pour appeler ces Function je fais un Dlookup pour extaire le champ Mémo et le mettre dans une variable String, un peu comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Do While Not rs566.EOF
        Dim contentSWIFT As String
        contentSWIFT = DLookup("SWIFTContent", "SWIFTDataMine", "ID = " & rs566.Fields("IDSWIFTIntegration").Value)
        DateSwift = fnDateSwift(contentSWIFT)
        Destinataire = fnDestinataire(contentSWIFT)
    rs566.MoveNext
    La question que je me pose c'est : est ce qu'il ne serait pas plus performant que je fasse le Dlookup dans les Function ?
    Là, je me trimballe un String qui peut peser 9 Ko, alors que si je fais le Dlookup dans chaque function, je passe un ID
    Est ce que les interrogations de table dans Access sont bien fluide ou est ce que cela consomme beaucoup de ressource ?

    Merci pour votre aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Les fonctions de domaine (DSum, DFirst, D...) ont la réputation d'être assez lentes.
    Il est recommandé de les remplacer par un accès via un recordset ou une requête.
    Quand tu ouvres le recordset, si tu ne fais pas de modification, tu peux utiliser le paramètre dbOpenSnapShot.
    Mes tests faits il ya quelques années le rendait 2 fois plus rapide que le dbOpenDynaset.
    Aussi si tu utilises un recordset, ce qui est coûteux en temps, c'est l'ouverture et la fermeture donc si tu fais un traitement en boucle, il est recommandé de mettre l'openRecordset et le Close en dehors de la boucle.

    Ceci dit si tu n'as pas de problème de performance, alors laisse le de même.
    Car pour valider une amélioration il faut :
    1. Faire le traitement avec la version actuelle en chronométrant.
    2. Faire les modifs.
    3. Faire le traitement avec la nouvelle version en chronométrant.


    Et avec la puissance des machines actuelles, il faut que l'amélioration soit vraiment significative pour ratraper lors des traitements le temps passer à "Faire les modifs".

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton retour.

    Je ne vais pas passer beaucoup de temps dessus parce que je suis en Amont. Je me pose justement la question avant de faire le développement, histoire de me dire que je faire "le bon choix".....

    Je vais continuer ma conception en tenant compte de tes remarques, surtout le dbOpenSnapShot que je n'utilise pas assez, je crois.

    Une bonne journée à toi
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

Discussions similaires

  1. Utilisartion d'une arraylist dans une boucle, question de performance
    Par Djobird dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 20/07/2007, 17h28
  2. [WPF] Encore les images - question de performances
    Par BruceWayne dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 13/06/2007, 13h23
  3. question de performance : transtypage ou pas ?
    Par brice01 dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 19/03/2007, 16h04
  4. [question de performance]
    Par viny dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/08/2005, 22h48
  5. Question de performance
    Par davidx dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/11/2003, 22h55

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