Vitesse +20% des casses de variable

Bonjour,

j’ai voulu vérifier si il y avait une “transmission” des données d’une variable a une autre ou un empilement , et j’ai decouvert une chose assez importante dans mon cas ou je fais des milliards de traitement dans des boucles, la casse des variable peut reduire la vitesse ou l’augmenter de 20% env.

Voici le code de test :
<code 4D>
$t1:=Nombre de millisecondes

//$V1:=“toto” // V Majuscule
$v1:=“toto” // v minuscule
$V2:=$V1
$V3:=$V2
$V4:=$V3
$V5:=$V4

// tester le melange Minuc et majuscule, puis 2 minuscules ou 2 Majuscules, le temps obtenu est : (sur mon mac)
// Melange minuc / majusc = 1474
// 2 minuscules ou 2 majuscules = 1250
// presque 20% de vitesse d’écart …
Boucle ($i;1;1000000)
$V6:=$V1
Fin de boucle
ALERTE(Chaîne(Nombre de millisecondes-$t1))

</code 4D>

voilà, peut être un petit gain pour ceux qui ne font pas attention a la casse dans le nom des variables sur de grandes boucles.

Pour la question initiale, non, $V6 ne va pas chercher le contenu de $V5 qui va chercher le contenu de $V4 qui va chercher le contenu de $V3 etc … $V5 contient le mot “toto” directement. Ca semblait une évidence, mais vérifier, la preuve, n’est finalement pas inutile !

Du coup, j’hésite a passer TOUTES mes variables en MAJUSC ou MINUSC afin de ne pas bêtement perdre du temps dans les gros traitements par inattention sur la casse (une lettre suffit).

Que feriez-vous ou que faites-vous déjà?

Effectivement. En v17R2 j’ai en général 100 ms de plus (770 vs 670)

En compilé, le raisonnement tient il toujours ?

Si on utiise l’autocompletion en écrivant le code, ce soucis ne devrait pas en être un.

Si les variables sont déclarées C_TEXT() le problème ne se posent plus

: Bertrand SOUBEYRAND

En compilé, le raisonnement tient il toujours ?
Le compilo mettant tout en majuscule…

Bon, à part ça, chercher si la casse ou la longueur des noms de propriétés des objets peut influer sur le stockage ou les perfs, pourquoi pas. Mais pour des variables, on n’est pas loin de se demander si une boucle sur $i va plus vite qu’une sur $ii qui a deux lettres ou $j qui est plus loin dans l’alphabet. Et si ça s’avérait être le cas, je ne pense pas que ça m’empêcherait de dormir.

: Arnaud DE MONTARD

on n’est pas loin de se demander si une boucle sur $i
Typé en tant que entier long ou pas typé donc réel

: Arnaud DE MONTARD

Le compilo mettant tout en majuscule…
exact, la casse ne change rien en fait … j’aurais mieux fait de fermer ma bouche … :roll:

: Arnaud DE MONTARD

Bon, à part ça, chercher si la casse ou la longueur des noms de
propriétés des objets peut influer sur le stockage ou les perfs,
pourquoi pas. Mais pour des variables, on n’est pas loin de se
demander si une boucle sur $i va plus vite qu’une sur $ii qui a deux
lettres ou $j qui est plus loin dans l’alphabet. Et si ça s’avérait
être le cas, je ne pense pas que ça m’empêcherait de dormir.
En compilé, ca ne change rien, en interprété oui, la casse comme la longueur de variable, mais qui tourne en prod en interprété …personne quasiment.
ya une diff entre $i et $iiiiiiiiiiiiiiiiiiiiiiiiiiiiii en interprété … seulement…

: Bertrand SOUBEYRAND
: Arnaud DE MONTARD

on n’est pas loin de se demander si une boucle sur $i
Typé en tant que entier long ou pas typé donc réel
j’ai pas de diff en interprété ou compilé meme si je declare les variables, mais il y en a peu. C’est toujours mieux de le faire de tt façon.