Taille maximum d'un tableau de byte ?

cretthie 135 Messages postés mercredi 27 juin 2012Date d'inscription 10 janvier 2012 Dernière intervention - 24 avril 2008 à 00:38 - Dernière réponse : cretthie 135 Messages postés mercredi 27 juin 2012Date d'inscription 10 janvier 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

13 réponses

Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 avril 2008 à 09:43
0
Merci
la taille de ta mémoire, je dirai
au pire, fais plusieurs tableau ... ca fragmentera les données..
Commenter la réponse de Renfield
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 24 avril 2008 à 16:37
0
Merci
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
Commenter la réponse de Kevin.Ory
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 avril 2008 à 16:45
0
Merci
sur, ca va forcer ta mahine a paginer, etc...
Commenter la réponse de Renfield
cretthie 135 Messages postés mercredi 27 juin 2012Date d'inscription 10 janvier 2012 Dernière intervention - 24 avril 2008 à 18:15
0
Merci
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
Commenter la réponse de cretthie
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 24 avril 2008 à 21:35
0
Merci
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+
Commenter la réponse de Kevin.Ory
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 24 avril 2008 à 21:42
0
Merci
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 :)
Commenter la réponse de Kevin.Ory
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 24 avril 2008 à 23:22
0
Merci
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 ...
Commenter la réponse de jmfmarques
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 25 avril 2008 à 01:18
0
Merci
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
Commenter la réponse de Kevin.Ory
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 25 avril 2008 à 01:31
0
Merci
... 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
Commenter la réponse de Kevin.Ory
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 25 avril 2008 à 05:54
0
Merci
le plus galère, c'est qu'il faut que cette mémoire soit contigue... et c'est de la que viendra la pagination
Commenter la réponse de Renfield
cretthie 135 Messages postés mercredi 27 juin 2012Date d'inscription 10 janvier 2012 Dernière intervention - 26 avril 2008 à 11:28
0
Merci
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..

++
Commenter la réponse de cretthie
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 26 avril 2008 à 13:00
0
Merci
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é ^^
Commenter la réponse de Kevin.Ory
cretthie 135 Messages postés mercredi 27 juin 2012Date d'inscription 10 janvier 2012 Dernière intervention - 1 mai 2008 à 22:55
0
Merci
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
Commenter la réponse de cretthie

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.