Nombre d'octets mémoire d'une expression

job75

XLDnaute Barbatruc
Bonjour le forum,

Quand dans un problème de formules on a le choix entre plusieurs solutions, il peut être intéressant de connaître le nombre d'octets de mémoire occupés par chacune.

Ci-joint un fichier permettant de faire ce calcul.

On utilise la plage A1:A1024 (avec des formules légèrement différentes les unes des autres) car la taille d'un fichier varie par paliers de 512.

Quelques résultats :

Valeur logique => 1 octet

Nombre entier court => 2 octets

Texte "" => 2 octets

Référence (B1) => 4 octets

Référence (B1:B2) => 8 octets

Référence (Feuil2!A1) => 6 octets

1+1 => 6 octets, donc opérateurs + - * / ^ & => 2 octets

(1) => 3 octets donc () => 1 octet

REPT(; ) => 4 octets

SI(;;"") => 20 octets, etc etc...

A+
 

Pièces jointes

  • Octets (base).zip
    14.7 KB · Affichages: 85
Dernière édition:

job75

XLDnaute Barbatruc
Re : Nombre d'octets mémoire d'une expression

Bonjour le forum,

Pour les curieux, voici pourquoi j'utilise une plage de 1024 cellules (A1:A1024) plutôt que 512.

Lors de leur 1ère occurrence, certaines expressions : fonctions volatiles MAINTENANT AUJOURDHUI DECALER INDIRECT, références externes, Noms pas définis, prennent des octets supplémentaires.

Pour cette unique raison, la taille du fichier peut prendre une tranche supplémentaire de 512 octets.

Pour se rendre compte de ce phénomène, il faut utiliser une autre méthode : faire travailler le fichier à la limite d'une tranche de 512 octets.

On peut aussi utiliser un fichier Excel 4.0, mais les résultats sont différents parfois : une référence prend 3 octets au lieu de 4.

A+
 

job75

XLDnaute Barbatruc
Re : Nombre d'octets mémoire d'une expression

Bonjour à tous,

Correctif à mon post précédent.

Pour les fonctions volatiles, il s'agit de la 1ère occurrence dans une même cellule.

Dans ce cas là, la taille du fichier ne peut pas augmenter d'une tranche supplémentaire de 512 octets.

Mais c'est quand même intéressant :

MAINTENANT() => 6 octets

AUJOURDHUI() => 6 octets

MAINTENANT()-AUJOURDHUI() => 10 octets donc AUJOURDHUI() => 2 octets

A+
 

jeanpierre

Nous a quitté
Repose en paix
Re : Nombre d'octets mémoire d'une expression

Bonjour job75,

J'espère que ton anniversaire récent à été excellent. J'en profite pour te souhaiter un Très bon anniversaire et de très nombreux autres après.

Ton travail est très intérressant et j'avoue que, si dans les années 80 c'était chose courante que la chasse aux octets, aujourd'hui on n'y pense plus guère voire pas du tout.

Tu nous apportes, là, la base d'un nouveau joujou, avec celui de ROGER et pierrejean entre autres sur la rapidité de tel ou tel code.

Je vais m'y coller à chaque fois que possible.

Bonne journée et vacances en Normandie.

Jean-Pierre
 

job75

XLDnaute Barbatruc
Re : Nombre d'octets mémoire d'une expression

Bonjour jeanpierre, le forum,

Retour de Normandie, merci jeanpierre.

En effet le comptage des octets ne présente maintenant qu'un seul intérêt (la recherche de la rapidité étant bien sûr le critère n° 1) : choisir la meilleure programmation.

J'utilisais ce critère quand je faisais des macros Excel 4.0 (il y a encore 3 ans), pour les optimiser.

Avec VBA on peut aussi aller dans cette direction, ce qui éviterait souvent des macros bien lourdes...

A+
 

job75

XLDnaute Barbatruc
Re : Nombre d'octets mémoire d'une expression

Bonsoir Staple :)

Regarde bien mes explications sur le fichier.

Note bien le nombre d'octets (Taille) du fichier tel qu'il est (clic droit sur l'icône du fichier-Propriétés) et entre ce nombre en F15.

Même chose en F17 après entrée de l'expression dans la formule en colonne A et enregistrement .

A+
 

job75

XLDnaute Barbatruc
Re : Nombre d'octets mémoire d'une expression

Re Staple,

Non pas dans un livre, comme je le disais je faisais ça sur des fichiers Excel 4.0 (dont la taille ne saute pas par tranche de 512 octets).

A la demande d'hoerwind je viens juste d'imaginer dans ce fil une méthode pour Excel 97/2003 (qui doit marcher aussi je pense pour Excel 2007).

Edit : sur mon fichier un nombre décimal non signé doit prendre en effet 8 octets (je n'ai pas testé) soit 64 bits.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Nombre d'octets mémoire d'une expression

Re,

Comme dit dans mon 1er post, les formules en colonne A sont toutes différentes :

Code:
=NBVAL([COLOR="Red"]1[/COLOR];)
=NBVAL([COLOR="Red"]2[/COLOR];)
=NBVAL([COLOR="Red"]3[/COLOR];)
etc...

C'est indispensable, autrement Excel (97/2003) considèrerait que c'est une seule et même formule et cette méthode ne fonctionnerait pas :)

Pour créer ces formules différentes, entrer en A1 la formule :

Code:
=NBVAL(C1;)

et la recopier jusqu'en A1024 (Ctrl+Entrée par exemple)

Puis par la commande Remplacer, supprimer la lettre C...

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 473
Membres
103 553
dernier inscrit
jhnm