OVH Cloud OVH Cloud

Rapidité

6 réponses
Avatar
garnote
Bonsoir honorables contributeurs,

Par curiosité, pour quelle raison une macro
s'exécute moins rapidement lors de son
premier lancement ?

Serge

6 réponses

Avatar
Daniel.M
Salut Serge,

Peut-être parce qu'elle compile le source en p-code (vraiment pas sûr).
Obtiens-tu des variations importantes mesurées avec GetTimeCount() ou tu
remarques plutôt que c'est l'étape de mise-en-marche qui est plus longue?

Salutations,

Daniel M.

"garnote" wrote in message
news:KaDGc.101262$
Bonsoir honorables contributeurs,

Par curiosité, pour quelle raison une macro
s'exécute moins rapidement lors de son
premier lancement ?

Serge




Avatar
michdenis
Bonjour Garnote,

C'est une question de Cash !!! ooups de cache! (antémémoire) c'est-à-dire de mémoire qui est situé "tout près" du
processeur (CPU) lui-même (dans l'anti-chambre) et qui fonctionne à la même cadence que le processeur lui-même ( il
n'est pas assujetti au bus (rien à voir avec autobus) de communication entre les barrettes de mémoire" du système et le
CPU . Et plus ce cache (mémoire) est grand : 128 , 256 , 512 Ko ( des kilo-octets à ne pas confondre avec des Mo) , plus
les performances devraient être grandes.

En fait dans cette antémémoire se retrouve des informations susceptibles d'être requises immédiatement par le
processeur. Lorsque ce dernier fait sa requête, l'information est tout près et elle est prête à être traiter. Dans les
faits c'est un peu plus compliquer que cela. C'est la structure même du "comment" l'information est traitée par le
processeur.

Quand tu exécutes une procédure pour une deuxième fois, antémémoire ou le cache du processeur contient déjà beaucoup
d'informations relatives aux toutes dernières opérations. Cette information est traitée sur le champ .. ce n'est pas
vrai lors de la première exécution .. car ce que contient le cache à ce moment là, n'a probablement rien à voir avec les
futures opérations.

Le reste dans un bon livre durant tes vacances !!!


Salutations!




"garnote" a écrit dans le message de news:KaDGc.101262$
Bonsoir honorables contributeurs,

Par curiosité, pour quelle raison une macro
s'exécute moins rapidement lors de son
premier lancement ?

Serge
Avatar
Lucien
Bonjour,
Le problème est identique avec ACCESS, si l'on n'a pas compiler avant .
Amitiés
Lucien de Leuze

"Daniel.M" a écrit dans le message de
news:
Salut Serge,

Peut-être parce qu'elle compile le source en p-code (vraiment pas sûr).
Obtiens-tu des variations importantes mesurées avec GetTimeCount() ou tu
remarques plutôt que c'est l'étape de mise-en-marche qui est plus longue?

Salutations,

Daniel M.

"garnote" wrote in message
news:KaDGc.101262$
Bonsoir honorables contributeurs,

Par curiosité, pour quelle raison une macro
s'exécute moins rapidement lors de son
premier lancement ?

Serge








Avatar
garnote
Salut Daniel,
C'est l'étape de mise en marche qui fait des longueurs
(mais rien de dramatique).
Au deuxième appel, c'est comme si la macro se souvenait
de ce qu'elle a fait au premier :-)))
Et pourrais-tu me rappeler comment utiliser GetTimeCount().

Serge

"Daniel.M" a écrit dans le message de
news:
Salut Serge,

Peut-être parce qu'elle compile le source en p-code (vraiment pas sûr).
Obtiens-tu des variations importantes mesurées avec GetTimeCount() ou tu
remarques plutôt que c'est l'étape de mise-en-marche qui est plus longue?

Salutations,

Daniel M.

"garnote" wrote in message
news:KaDGc.101262$
Bonsoir honorables contributeurs,

Par curiosité, pour quelle raison une macro
s'exécute moins rapidement lors de son
premier lancement ?

Serge








Avatar
garnote
Que dire de plus Monsieur Michon !
Pas tout compris mais assez pour comprendre :-)

Serge

"michdenis" a écrit dans le message de news:
u9#
Bonjour Garnote,

C'est une question de Cash !!! ooups de cache! (antémémoire)
c'est-à-dire de mémoire qui est situé "tout près" du

processeur (CPU) lui-même (dans l'anti-chambre) et qui fonctionne à la
même cadence que le processeur lui-même ( il

n'est pas assujetti au bus (rien à voir avec autobus) de communication
entre les barrettes de mémoire" du système et le

CPU . Et plus ce cache (mémoire) est grand : 128 , 256 , 512 Ko ( des
kilo-octets à ne pas confondre avec des Mo) , plus

les performances devraient être grandes.

En fait dans cette antémémoire se retrouve des informations susceptibles
d'être requises immédiatement par le

processeur. Lorsque ce dernier fait sa requête, l'information est tout
près et elle est prête à être traiter. Dans les

faits c'est un peu plus compliquer que cela. C'est la structure même du
"comment" l'information est traitée par le

processeur.

Quand tu exécutes une procédure pour une deuxième fois, antémémoire ou le
cache du processeur contient déjà beaucoup

d'informations relatives aux toutes dernières opérations. Cette
information est traitée sur le champ .. ce n'est pas

vrai lors de la première exécution .. car ce que contient le cache à ce
moment là, n'a probablement rien à voir avec les

futures opérations.

Le reste dans un bon livre durant tes vacances !!!


Salutations!




"garnote" a écrit dans le message de
news:KaDGc.101262$

Bonsoir honorables contributeurs,

Par curiosité, pour quelle raison une macro
s'exécute moins rapidement lors de son
premier lancement ?

Serge





Avatar
Daniel.M
C'est l'étape de mise en marche qui fait des longueurs
(mais rien de dramatique).


Cela confirme mon diagnostic : c'est la compilation qui survient à ce moment.

Et pourrais-tu me rappeler comment utiliser GetTimeCount().



Declare Function GetTickCount Lib "kernel32" () As Long

Sub DDDDD()
Dim microTemps As Long
microTemps = GetTickCount()
...

Salutations,

Daniel M.