Taille maximum d'un tableau de byte ?

cretthie Messages postés 133 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 10 janvier 2012 - 24 avril 2008 à 00:38
cretthie Messages postés 133 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 10 janvier 2012 - 1 mai 2008 à 22:55
   Bonjour,

Comme indiqué dans le titre, j'aimerai bien savoir si la taille d'un tableau de byte est limité. Si oui,
a quelle taille. D'apres moi, comme on peut mettre une taille uniquement avec un integer, la taille max
est un integer. mais est ce inferieur ? Y A-t-il des alternatives ?

Merci pour votre aide,

A bientot

Thierry

13 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 avril 2008 à 09:43
la taille de ta mémoire, je dirai
au pire, fais plusieurs tableau ... ca fragmentera les données..
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
24 avril 2008 à 16:37
Salut,

En Integer le max serait donc à plus de 2Go de donnés, je te déconseil fortement de faire un tableau de cette taille
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 avril 2008 à 16:45
sur, ca va forcer ta mahine a paginer, etc...
0
cretthie Messages postés 133 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 10 janvier 2012 1
24 avril 2008 à 18:15
Bonjour, tout d'abord, merci pour vos reponses.

ca va forcer la RAM, oui, mais est ce que ca peut  marcher avec une machine 512 ram et un tableau de 1 giga
ou meme 700 mo ?

J'ai songé a fractionner, mais c'est toujours un methode de plus... blabla, je suis un peu flémard.
et est ce que ca change qqc avec en fractionnant ?

Je vais tout de meme suivre vos conseils je pense. et tester.

A bientot.

Thierry
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
24 avril 2008 à 21:35
Re,

Je suis tout de même curieux de savoir quelles données de cette taille tu voudrais charger en mémoire. Je n'ai aucune fichier de cette taille sur mon DD moi ;p (à part le fichier d'échange peut-etre)
A la limite, tu peux avoir de tels fichiers lorsque tu RIP un film en HD, ou voir un fichier base de données d'un seveur, mais bon...

Si tu veux traiter un fichier de cette taille, ce qu'il faut faire c'est le faire par petits morceaux. Tu charge qq MB du fichiers à traiter, une fois les données traitées, tu les enregistre dans un nouveau fichier. Puis tu recharge qq MB du fichier source, tu traite, et tu les enregistre à la suite dans le nouveau fichier, etc. Une fois toutes les données traité, tu efface le fichier source et tu renomme le nouveau fichier. (même chose pour une copie de fichier)

Comme le dit Renfield, si tu tente de charger tout ca en mémoire, Windows sera obligé de passer par le fichier d'échange (qui est donc un fichier sur le disque-dur dans lequel Windows enregistre les données lorsque la mémoire vive est pleine). Ca obligera donc Windows à faire des échanges entre la mémoire vive et le fichier d'échange complètement inutile, et ca ralentira tout ton processus (et les accès disque de tous les autres processus):

Au pire des cas, ca te donnerait donc ça:
1. Ton fichier -> mémoire vive                  - Lecture sur le disque-dur
2. Mémoire vive -> fichier d'échange         - Ecriture sur le disque dur
3. Fichier d'échange -> mémoire vive       - Lecture sur le disque dur
4. Traitement                                          
5. Mémoire vive -> fichier d'échange         - Ecriture sur le disque-dur
6. Fichier d'échange -> mémoire vive         - Lecture sur le disque-dur
7. Mémoire vive -> ton nouveau fichier      - Ecriture sur le disque-dur

Au lieu de ça:
1. Ton fichier -> mémoire vive                  - Lecture sur le disque-dur

2. Traitement                                          

3. Mémoire vive -> ton nouveau fichier      - Ecriture sur le disque-dur

A+
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
24 avril 2008 à 21:42
Ah j'ai pas assez bien lu ton message précédent :)
Tu parle d'un tableau d'1 GB ou de 700 MB, je pense donc que tu veux charger un DivX en mémoire.

Un lecteur vidéo va charger le fichier source (le DivX) au fur et a mesure que la lecture avance (par petits bouts de qq MB), et pas la totalité dès le début. Donc si tu efface le fichier DivX pdt sa lecture, la lecture continue qq secondes (la partie chargé en mémoire) et s'arrete (ce n'est pas le cas avec WMP, car celui-ci fais une copie du fichier à lire dans un dossier tempo)

Voila :)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
24 avril 2008 à 23:22
Bonsoir,

Je pense que notre ami ne se réfère pas à l'occupation en mémoire, mais au nombre maximum (auquel il peut se référer) d'élements, dans l'une des dimensions du tableau,  du tableau ...
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
25 avril 2008 à 01:18
Oui c'est juste, mais c'est fortement lié. Tout ce que je dis ne répond pas à sa question, mais explique que de toute façon on ne travaillera jamais avec des tableaux dans cet ordre de grandeur. Mais c'est vrai que ça peut être utile de le savoir :-)

Mais je viens d'essayer. La taille d'un tableau ne semble limité que par la mémoire disponible (d'ailleur je n'ai vu nul part qu'il parlaient de taille en integer sur MSDN)

Ceci veut dire que Windows ne peut donc pas paginer un tableau, du moins pas pendant sa création.

Chez moi la taille max se trouve entre 578 et 579MB, au dessus: OutOfMemoryException. J'ai 768 MB de RAM
Je suis étonné par la rapidité de la création du tableau... A chaud, ça m'affiche 0 ticks dans la plupart des cas, et qqfois des valeurs max 200 000 ticks (20 ms, certainement la pagination de la mémoire)

CQFD
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
25 avril 2008 à 01:31
... Entre 0 et 200 000 ticks, alors qu'apparement l'heure système (que j'utilie) à apparement une résolution de 2 000 000 de ticks

Faut pas faire attention à mes Ticks, mais en tout cas ça n'a rien de lent
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 avril 2008 à 05:54
le plus galère, c'est qu'il faut que cette mémoire soit contigue... et c'est de la que viendra la pagination
0
cretthie Messages postés 133 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 10 janvier 2012 1
26 avril 2008 à 11:28
concernant le Integer pour un tableau de byte : si tu mets
Option Strick on
dim monLong as long
dim monTbl(monLong)

Merci pour les commentaires..

++
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
26 avril 2008 à 13:00
Ah ouais effectivement :)

A part ça, c'est Renfield qui avait raison depuis le début:
Renfield : la taille de ta mémoire, je dirai

Ca mérite d'être signalé ^^
0
cretthie Messages postés 133 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 10 janvier 2012 1
1 mai 2008 à 22:55
Ok,
En effet, il faudra creer des fichier txt et les reprendre ensuite. apres les supprimer.
je vous remercie a tous pour vos explications.
Je vais tester, mais pour l'instant, j'ai pas le temps, je dois remplir mes impots..
Aux cas ou, je vous dirais ce que je pense de mes testes et resultats les plus performants.. Bla Bla..

A plus et encore merci pour tout.

Thierry
0
Rejoignez-nous