Ce nettoyage nous permettra de lancer plusieurs cas-tests en série de manière plus sécurisée et, à terme, de mélanger des analyses différentes sans risques (une analyse de lubri par exemple - soyons fou!). Un autre but de ce nettoyage est de siminuer le nombre de updateShortcuts
dans le code des éléments pour au final gagner du temps CPU.
Déjà fait:
getMetaElShcuts
dans les éléments. Tous les shortcuts sont donc correctement typés (leur gestion dans l'élément de volume est un peu limite mais bon…).generateElements
).onceflag
). Il ne reste plus que des variables statiques qui sont utilisées pour éviter des allocations/désallocations de variables temporaires (c'est-à-dire les moins pires statiques). Reste:
initialiseShcuts
(et supprimer le dernier OnceFlag
au niveau des shortcuts).updateShortcuts
)Interaction
(j'ai laissé un mem leak pour l'instant).massMater
en material
par exemple) pour améliorer la lisibilité (c'est pas difficile vu l'état actuel).CPU:
Coté CPU, l'accès au shortcut via l'interaction n'est pas pénalisant. On observe même une légère amélioration du CPU sur toutes les machines (que je n'explique pas).
Si certains se demande à quoi sert ce que je fais: voila un beau bug que je viens de trouver dans le thermomec. Il apparait lorsqu'il y a plus d'une interaction. Précédemment, vu que chaque interaction partageait un seul et unique shortcut, il était temps que tout soit bien synchronisé… Visiblement ce n'était pas le cas, malgré les centaines d' updateShortcuts
qui trainent un peu partout:
Cas test: (parmi d'autres): apps.monosMaterials.tmEvpIsoFast2dAxiCis
: il s'agit de 5 monos avec 5 matériaux différents. Donc anciennement 1 seul shortcut pour 5 dans la nouvelle version). Je montre ci-dessous les valeurs relatives à un des monos avec OFFI et NEW (cette version). Ensuite, j'ai modifié le test pour ne simuler qu'un seul mono et j'ai relancé le test avec les 2 versions.
OFFI | NEW | OFFI (1 seul mono) | NEW (1 seul mono) | |
---|---|---|---|---|
deltaTempPoint43 | 13.6546 | 23.5852 | 23.5846 | 23.5846 |
devSigXXPoint43 | 271.318 | 272.544 | 272.54 | 272.54 |
eplPoint43 | 0.184151 | 0.185669 | 0.185661 | 0.185661 |
Bref, rien de grave: une erreur de près de 100% sur la variation de températiure finale .
J'ai pas creusé pour comprendre d'où venait précisément cette erreur. Certainement un updateShortcut
qui manque quelque part… De toutes façons, c'est corrigé.
Faudrait maintenant voir si cette solution est bien la bonne. Je laisse ça aux spécialistes du thermomec.
— Romain BOMAN 2008/02/07 10:40