CurrentDb et performances

Le saviez-vous ?

CurrentDb est un objet DAO qui fait référence à la base de données active. C’est un objet fondamental, qui sert de point de départ pour pas mal de traitements.

Test #1

Mais l’instanciation d’objets est un processus gourmand en performances. Vous pouvez le vérifier très facilement si vous utilisez CurrentDb dans une boucle. Voici un bout de code pour tester ça :

A chaque tour de boucle, le chemin de la base de données est simplement stocké dans la variable strTest (il n’est même pas affiché). Le problème est que CurrentDb est rappelé à chaque tour de boucle. Et voici les résultats (en secondes) sur une machine de test :

Test #2

Le même code, un peu amélioré :

Les retouches :

  1. Une variable db, de type DAO.Database, est créée en début de listing.
  2. Cette variable reçoit l’instance de CurrentDb.
  3. Dans la boucle, on fait appel à la variable db plutôt qu’à CurrentDb. C’est là où on gagne des performances !
  4. N’oubliez pas, en fin de code, de libérer vos variables objet. Ici : Set db = Nothing.

Les résultats parlent d’eux-mêmes :

En résumé : pensez à stocker CurrentDb dans une variable, si vous devez l’utiliser plusieurs fois dans votre code !

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *