le
12-02-2013
04:36 AM
- dernière modification le
05-05-2025
09:06 AM
par
Content Cleaner
Bonjour,
Connaissant les problèmes de mémoire lié au tableaux volumineux sous labview, je souhaite savoir :
1 - Comment calculer la place mémoire que va prendre mon tableau ? example : tableau de double n par m
2 - D'après se document (ici), dois je conclure que la case d'un tableau de double prendra 64 bit, soit 8 octets ?
3 - Le problème semble lié à la taille de la page mémoire, où puis je me renseigner sur la taille de cette page par défaut pour un OS donnée ? (ici windows 7)
Harti.
Résolu ! Accéder à la solution.
le 12-04-2013 02:48 AM
Hello,
La question de la mémoire est toujours épineuse et piégeuse pour les performances. Mais pour faire court, pour Windows, effectivement, un tableau n par m de double prendra 8.(n.m)+8 octets.
Parce qu'un double prend 8 octets, et que la taille des deux dimensions sont des I32, soit 4 octets chacun. Et comme Windows propose un alignement d'1 seul octet pour les tableaux, la taille utilisée en mémoire reste telle quelle.
La question devient plus corsée avec les histoires d'alignement sur d'autres OS...
Le fait d'avoir un OS 64-bit fait que la taille des registres est de 8 octets, mais la grande majorité des compilateurs empaquètent les données dans les registres pour plus de compacité en mémoire.
Cdt
-Eric
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
12-04-2013 05:57 AM - modifié 12-04-2013 05:58 AM
Dans mon cas, et donc d'après votre formule, je me retrouve avec un tableau qui grossit jusqu'à prendre la place de 200 Mo.
Ce qui explique l'erreur de mémoire que je rencontre, lié à l'espace non-contigu.
Pour limiter ce problème, j'ai lu qu'il était recommandé de segmenter le tableau, mais je ne vois pas comment faire...