OVH Cloud OVH Cloud

Prog en mémoire

5 réponses
Avatar
TouTi
Bonjour

Après la création d'un prog, je remarque qu'il utilise pas mal de ressource
mémoire.

Compilé la taille du fichier fait 2.28 Mo et en mémoire il utilise plus de
30 000K.

Il contient pas mal :
* De tableaux dont 5 sont de la forme : Global table(50000, 21)
* Une dixaine de collections de la forme : Public tbhs(9999) As tbhtype
* Une cinquantaine de variable public et global

Qu'est-ce qui prend le plus de mémoire, le stockage des données dans les
tables, collections, variable ou la taille du code (ou bien les deux)???

Que pourrais-je envisager pour diminuer son poids en mémoire???

Merci de vos remarques

TouTi
--

5 réponses

Avatar
Quasimodo
TouTi pretended :
Bonjour

Après la création d'un prog, je remarque qu'il utilise pas mal de ressource
mémoire.

Compilé la taille du fichier fait 2.28 Mo et en mémoire il utilise plus de
30 000K.

Il contient pas mal :
* De tableaux dont 5 sont de la forme : Global table(50000, 21)
* Une dixaine de collections de la forme : Public tbhs(9999) As tbhtype
* Une cinquantaine de variable public et global

Qu'est-ce qui prend le plus de mémoire, le stockage des données dans les
tables, collections, variable ou la taille du code (ou bien les deux)???

Que pourrais-je envisager pour diminuer son poids en mémoire???

Merci de vos remarques

TouTi



bonjour,
de charger les tableaux à la volée. D'agrandir les tableaux à la volée
(redim preserve ...), mais pas de les diminuer sinon vous perdrez en
temps de traitement, cela consomme bcp en temps machine. De n'utiliser
les tailles dont on à besoin et pas plus.
1.stocker des données, oui mes quels données? Un recordset, une
varibale int, ...
C'est certain que le stockage d'un recordset (aller +- 10000 records)
est énorme et demande tjs plus qu'une simple variable int ou même une
centaine de var int.
2.Taille du code ???? un peux plus d'explication sur votre code serais
bien venu. Votre code se trouve dans des dll, en dcom, dans des formes
que vous charger et décharger à la volée (set ... = nothing), ... ?
3. Le type tbhtype que contient il comme types et leurs tailles?
4.Combien de tableau en tout, vous avez vu la taille de votre
déclaration --> Global table(50000, 21) :'( c'est un véritable besoin
ou surdimensioné ?
5.La cinquantaine de variables, sont elles des variables de type de
base, comme par ex. integer, long, ou des type objet, ... ?

@+ Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
Patrice Henrio
Il se peut que si les tableaux sont passés en paramètre dans des fonctions
ou des paramètres, et qu'ils ne sont pas physiquement détruits par erase
après, l'occupation mémoire croit très vite. Donc bien penser à "erase T"
dés qu'on a plus besoin de T.


"Quasimodo" a écrit dans le message de news:

TouTi pretended :
Bonjour

Après la création d'un prog, je remarque qu'il utilise pas mal de
ressource
mémoire.

Compilé la taille du fichier fait 2.28 Mo et en mémoire il utilise plus
de
30 000K.

Il contient pas mal :
* De tableaux dont 5 sont de la forme : Global table(50000, 21)
* Une dixaine de collections de la forme : Public tbhs(9999) As tbhtype
* Une cinquantaine de variable public et global

Qu'est-ce qui prend le plus de mémoire, le stockage des données dans les
tables, collections, variable ou la taille du code (ou bien les deux)???

Que pourrais-je envisager pour diminuer son poids en mémoire???

Merci de vos remarques

TouTi



bonjour,
de charger les tableaux à la volée. D'agrandir les tableaux à la volée
(redim preserve ...), mais pas de les diminuer sinon vous perdrez en temps
de traitement, cela consomme bcp en temps machine. De n'utiliser les
tailles dont on à besoin et pas plus.
1.stocker des données, oui mes quels données? Un recordset, une varibale
int, ...
C'est certain que le stockage d'un recordset (aller +- 10000 records) est
énorme et demande tjs plus qu'une simple variable int ou même une centaine
de var int.
2.Taille du code ???? un peux plus d'explication sur votre code serais
bien venu. Votre code se trouve dans des dll, en dcom, dans des formes que
vous charger et décharger à la volée (set ... = nothing), ... ?
3. Le type tbhtype que contient il comme types et leurs tailles?
4.Combien de tableau en tout, vous avez vu la taille de votre
déclaration --> Global table(50000, 21) :'( c'est un véritable besoin ou
surdimensioné ?
5.La cinquantaine de variables, sont elles des variables de type de base,
comme par ex. integer, long, ou des type objet, ... ?

@+ Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com



Avatar
TouTi
bonjour Quaz

En fait mon projet, est une form sur laquelle je crée des objets graphiques
(trait, croix, ....). Chaque objet est représenté dans un carré de petit
taille et repéré par un colonne et une ligne. On a donc une sorte de grille
de taille pouvant aller jusque 224 colonnes et 224 lignes (ce qui nous donne
au maximum 50 000 carrés d'où la taille : table(50 000;21). Pour leur
gestion chaque objet peut disposer de 10 paramêtres (coordonnées, type
d'objet, couleur....). Pour gérer l'annulation de supression
(edition/annuler), les 10 paramêtres sont mis de cotés pour traitement
ultérieur d'où : table(50 000;21)

1.stocker des données, oui mes quels données? Un recordset, une
varibale int, ...
5.La cinquantaine de variables, sont elles des variables de type de
base, comme par ex. integer, long, ou des type objet, ... ?


Peut être une faute de ma part de ne pas déclarer les type des variables, je
les mets généralement dans un module sous la forme : Global DrawNow, CX, CY,
tt, TG, MTG, dep, depX, depY, table(50000, 21)

2.Taille du code ???? un peux plus d'explication sur votre code serais
bien venu. Votre code se trouve dans des dll, en dcom, dans des formes
que vous charger et décharger à la volée (set ... = nothing), ... ?


Tout mon code, function sont soit dans des modules ou dans les forms. Il
serait peut être intéressant de créer des dll

3. Le type tbhtype que contient il comme types et leurs tailles?


Pour chaque collection, le type peut contenir jusqu'à 30 déclarations
Public Type tbhtype
numlig As Integer
dep As String
engin As String
iti As String
fin As String
act1 As String
act2 As String
act3 As String
.....
End Type

4.Combien de tableau en tout, vous avez vu la taille de votre
déclaration --> Global table(50000, 21) :'( c'est un véritable besoin
ou surdimensioné ?


Devrais-je redimensionner le tableau selon le nombre de colonnes et lignes
utilisées...


Le programme fonctionne très bien mais j'ai peur qu'il demande beaucoup de
ressource aux machines plus anciennes.

PS : mais je suis complétement autodidactique en VB...

TouTi
Avatar
christophe-pasde
Bonjour,

Le tableau énorme que vous décrivez est le maximum d'objets pouvant être
représenté, il n'est peut être pas nécessaire de l'avoir tout le temps
en mémoire ?
D'autres part vous parlez de collection et de type utilisateur,
peut-être pouvez vous créer des classes (donc des objets) et utiliser
une collection d'objet qui se gére à la volée (add, remove) beaucoup
mieux que le mega tableau.
Ce qui en plus permet de créer des dll.

Christophe

TouTi a écrit :

bonjour Quaz

En fait mon projet, est une form sur laquelle je crée des objets graphiques
(trait, croix, ....). Chaque objet est représenté dans un carré de petit
taille et repéré par un colonne et une ligne. On a donc une sorte de grille
de taille pouvant aller jusque 224 colonnes et 224 lignes (ce qui nous donne
au maximum 50 000 carrés d'où la taille : table(50 000;21). Pour leur
gestion chaque objet peut disposer de 10 paramêtres (coordonnées, type
d'objet, couleur....). Pour gérer l'annulation de supression
(edition/annuler), les 10 paramêtres sont mis de cotés pour traitement
ultérieur d'où : table(50 000;21)


1.stocker des données, oui mes quels données? Un recordset, une
varibale int, ...
5.La cinquantaine de variables, sont elles des variables de type de
base, comme par ex. integer, long, ou des type objet, ... ?



Peut être une faute de ma part de ne pas déclarer les type des variables, je
les mets généralement dans un module sous la forme : Global DrawNow, CX, CY,
tt, TG, MTG, dep, depX, depY, table(50000, 21)


2.Taille du code ???? un peux plus d'explication sur votre code serais
bien venu. Votre code se trouve dans des dll, en dcom, dans des formes
que vous charger et décharger à la volée (set ... = nothing), ... ?



Tout mon code, function sont soit dans des modules ou dans les forms. Il
serait peut être intéressant de créer des dll


3. Le type tbhtype que contient il comme types et leurs tailles?



Pour chaque collection, le type peut contenir jusqu'à 30 déclarations
Public Type tbhtype
numlig As Integer
dep As String
engin As String
iti As String
fin As String
act1 As String
act2 As String
act3 As String
.....
End Type


4.Combien de tableau en tout, vous avez vu la taille de votre
déclaration --> Global table(50000, 21) :'( c'est un véritable besoin
ou surdimensioné ?



Devrais-je redimensionner le tableau selon le nombre de colonnes et lignes
utilisées...


Le programme fonctionne très bien mais j'ai peur qu'il demande beaucoup de
ressource aux machines plus anciennes.

PS : mais je suis complétement autodidactique en VB...

TouTi




Avatar
ng
Salut,

Là je pense que c'est un problème de conception, il faudrait revoir ca
autrement et surtout charger ces tables (qui snt très gros) dynamiquement :

'//Déclaration :
Dim tblTableau() As Long

'//Agrandissement
Redim Preserve tblTableau(Index)

'//Effacement
Erase tblTableau

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


TouTi wrote:
Bonjour

Après la création d'un prog, je remarque qu'il utilise pas mal de
ressource mémoire.

Compilé la taille du fichier fait 2.28 Mo et en mémoire il utilise
plus de 30 000K.

Il contient pas mal :
* De tableaux dont 5 sont de la forme : Global table(50000, 21)
* Une dixaine de collections de la forme : Public tbhs(9999) As
tbhtype
* Une cinquantaine de variable public et global

Qu'est-ce qui prend le plus de mémoire, le stockage des données dans
les tables, collections, variable ou la taille du code (ou bien les
deux)???

Que pourrais-je envisager pour diminuer son poids en mémoire???

Merci de vos remarques

TouTi