Bizarrrrrrrrre !!!!!

Sujets variés concernant le développement en PureBasic
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Bizarrrrrrrrre !!!!!

Message par Mytic »

J’ai remarqué un phénomène bizarre avec PureBasic.
Je vous explique !!
J’ai deux partitions dans mon disque dur (C: et D:)
C est full , il ne restait que 212 Mo.
Alors j’ai remarqué que à chaque fois que j’exécutai un programme dans PureBasic , y’avais le message Windows de nettoyage « Votre disque dur est plein ».
Alors là , la découverte , à chaque fois que j’éxecutai ce bout de Code , environ 100 Mo de disque dur disparaît 8O , et ne revient que quand je fermai PureBasic.
Et j’ai essayais avec d’autre Code et rien ne ce passé.
Voilà le bout de code dévoreur de Disque dur !!!

Code : Tout sélectionner

InitSprite()
UsePNGImageDecoder()
UseJPEGImageDecoder()
OpenWindow(0,0,0,500,500,"")
OpenWindowedScreen(WindowID(0),0,0,500,500,0,0,0)
InitKeyboard()
Global Dim imageg.l(9999,9999)
Global Dim image.l(9999,9999)
LoadImage(0,"c:\image.jpg")
Dites moi si c’est la même chose chez vous ?! :wink:
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

Je n'ai pas ce soucis cependant l'explication peut être celle-ci.

Tu utilises deux tableaux de dimensions ENORMES.

Chaque tableau pour avoir 99980002 élements :D Soit un total de 199960004 éléments....

Il faut pouvoir les stocker. Je pense qu'il n'est pas impossible que windows utilise son fichier d'échange (swap) pour stocker le surplus qu'il ne peut pas stocker dans la mémoire.

Personnellement j'évite d'utiliser des tableaux avec de telle dimension, si j'ai besoin de beaucoup d'éléments je préfère utiliser les listes qui sont là pour cela.
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

hors limite

Message par beauregard »

Mytic a écrit : Global Dim imageg.l(9999,9999)
Global Dim image.l(9999,9999)
8O
je ne sais pas quel jeu tu nous prépare, mais avec ça, ça ne peut qu'être énorme ! ;)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ca fait quand meme : 2 * ( ( 9999 * 9999 ) * 4 ) = 762 Mo !!!

Code : Tout sélectionner

;----------

Import "shlwapi.lib"
  StrFormatByteSizeA(size.l, *StrBuffer, LenBuffer.l)
EndImport

Macro StrFormatByteSize(size)
  PeekS(StrFormatByteSizeA(size, @res.s{32}, 32))
EndMacro

;----------

Dimension.l = 9999

Dim Test1.l(Dimension, Dimension)
Dim Test2.l(Dimension, Dimension)

NbOctets = @Test1(Dimension, Dimension) - @Test1(0, 0)
NbOctets + @Test2(Dimension, Dimension) - @Test2(0, 0)

Debug StrFormatByteSize( NbOctets )

;----------


bref, rien d'étonnant à ce que windows swap avec la mémoire virtuelle :D
Image
Anonyme

Message par Anonyme »

2 * ( ( 9999 * 9999 ) * 4 )
Ton calcul est faux :D un sprite prend plus de 4 octect en mémoire , regarde rien que la structure PB_Sprite3D , puis viens s'ajouté a cela chaque pixel codé sur 4 octets chacun en 32 bit , donc c'est enorme :D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Cpl.Bator a écrit :
2 * ( ( 9999 * 9999 ) * 4 )
Ton calcul est faux :D un sprite prend plus de 4 octect en mémoire , regarde rien que la structure PB_Sprite3D , puis viens s'ajouté a cela chaque pixel codé sur 4 octets chacun en 32 bit , donc c'est enorme :D
Oui le calcul est faux, pas parce qu'il s'agit de sprites , mais parce qu'un tableau imageg.l(9999,9999) ne contient pas 9999*9999 éléments mais 10000*10000 :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

comtois a écrit : ne contient pas 9999*9999 éléments mais 10000*10000 :)
le 0 ça compte effectivement, chose que j'avais oublié en me remettant à la programmation.

comtois, en parcourant les nombreux post des différents forums, je suis tombé sur une proposition de ta part pour réaliser un jeu en commun, et je suis assez triste que cela n'a pas aboutis.
Je tiens à te remercie pour tout ce que tu as fait.

merci
:D
Répondre