Optimiseur de RAM

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Optimiseur de RAM

Message par Le Soldat Inconnu »

J'ai fait ça cette après midi.
bien content du résultat car ça marche au poil :wink:

donc le principe utilisée est le suivant pour optimiser la RAM :
On rempli la mémoire avec des anneries pour forcer window à écrire ce qui sert pas sur le dur. (c'est le principe qu'utilise Tweak-XP)

chez moi, les résultats sont plutot pas mal, avec XP, il me reste plus que 90Mo en ram environ :D
bon après, on recharge ce dont on se sert, ça remonte à environ 110 - 140 mo, mais j'ai gagné quelque 100mo car on bout d'une journée à bidouiller sur purebasic, photoshop, etc ..., je suis facilement à 220 - 260 Mo

dite moi ce que ça donne chez vous, merci :)

ça donne le code suivant :

Code : Tout sélectionner

Enumeration
  #Memoire
  #Libre
  #Occupee
  #Optimiser
  #Etat
EndEnumeration

#TailleX = 200
#TailleY = 92

Procedure Optimisation(Total.l)
  #TailleMem = 16 * 1024 * 1024 ; 16 Mb
  NewList Memoire.l()
  
  ; On crée un échantillon destinée à remplir la mémoire
  MemOrigine = AllocateMemory(#TailleMem)
  
  For n = 0 To Total / 16 ; On rempli la mémoire avec des connerires
    AddElement(Memoire())
    Memoire() = AllocateMemory(#TailleMem)
    CopyMemory(MemOrigine, Memoire(), #TailleMem) ; On utilise la mémoire sinon, ça ne marche pas
  Next
  
  ; On supprime les blocs mémoire
  ResetList(Memoire())
  While NextElement(Memoire())
    FreeMemory(Memoire())
  Wend
  FreeMemory(MemOrigine)
  
  ClearList(Memoire())
  SetGadgetText(#Etat, "")
  DisableGadget(#Optimiser, 0)
EndProcedure


If OpenWindow(0, 0, 0, #TailleX, #TailleY, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Optimiser la RAM") = 0 Or CreateGadgetList(WindowID()) = 0
  End
EndIf


; Structure MEMORYSTATUS
;   dwLength.l ; SizeOf(MEMORYSTATUS)
;   dwMemoryLoad.l ; Pourcentage de mémoire utilisée
;   dwTotalPhys.l ; Taille de la mémoire en octects
;   dwAvailPhys.l ; Quantité de mémoire libre en octects
;   dwTotalPageFile.l
;   dwAvailPageFile.l
;   dwTotalVirtual.l
;   dwAvailVirtual.l
; EndStructure

MemoireInfo.MEMORYSTATUS
MemoireInfo\dwLength = SizeOf(MEMORYSTATUS)


TextGadget(#PB_Any, 3, 3, 100, 15, "Mémoire libre : ")
TextGadget(#PB_Any, 3, 18, 100, 15, "Mémoire occupée : ")
TextGadget(#Libre, 103, 3, #TailleX - 6, 15, "")
TextGadget(#Occupee, 103, 18, #TailleX - 6, 15, "")

ProgressBarGadget(#Memoire, 1, 33, #TailleX - 2, 20, 0, 100, #PB_ProgressBar_Smooth)

ButtonGadget(#Optimiser, 1, 54, #TailleX - 2, 22, "Optimiser la RAM")

TextGadget(#Etat, 3, #TailleY  - 15, #TailleX - 6, 15, "")

Timer = SetTimer_(WindowID(), 0, 250, 0)

Quitter = 0

Repeat
  Event = WaitWindowEvent()

  If Event = #PB_EventGadget
    Select EventGadgetID() ; boutons, zone de texte, ...
      Case #Optimiser
        If Total > 0
          SetGadgetText(#Etat, "Opération en cours")
          DisableGadget(#Optimiser, 1)
          CreateThread(@Optimisation(), Total)
        EndIf
    EndSelect
    
  ElseIf Event = #WM_TIMER ; On rafraichie l'affichage
    GlobalMemoryStatus_(@MemoireInfo) ; On récupère les information sur la RAM
    Pourcentage = MemoireInfo\dwMemoryLoad ; Pourcentage de RAM utilisée
    Libre = MemoireInfo\dwAvailPhys / 1024 / 1024 ; Espace libre en Mo
    Total = MemoireInfo\dwTotalPhys / 1024 / 1024
    Occupee = Total - Libre ; Espace occupée en Mo
    
    ; On affiche les valeurs
    SetGadgetState(#Memoire, Pourcentage)
    SetGadgetText(#Libre, Str(Libre) + " Mb")
    SetGadgetText(#Occupee, Str(Occupee) + " Mb (" + Str(Pourcentage) + "%)")
    
  ElseIf Event = #PB_EventCloseWindow
    If GetGadgetText(#Etat) = ""
      Quitter = 1
    EndIf
  EndIf
  
Until Quitter

KillTimer_(WindowID(), Timer)
End
le programme compiler avec icône est ici : (59 ko fichier zip)
http://perso.wanadoo.fr/lesoldatinconnu ... ysteme.zip
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ca marche nickel regis sur xp :)
j'étais à 180mo occupé sur 512 et je suis redescendu à 104mo
Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ben oui bravo ça a l'air de marcher chez moi aussi (xppro) :)
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Chez moi aussi, ça a triplé la mémoire libre :D
De 60Mo à 180 (sur 256), sous XPhome.
Malin!
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Chez mo je suis passé de 140 mo à 139 :oops:
Mais j'avais changé une clef du registre pour que les DLL inutilisées soient virées de la mémoire (ou du même style) , c'est peut être ça la différence
voir ici : http://www.zebulon.fr/astuces/astuce-windows-53-0.html
Je pensais que ça occasionnerai des plantages mais rien, j'ai pas eu de problèmes, et j'ai la même mémoiure consommée au demmarage qu'au moment ou je l'éteind. Essayez :wink:
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Chez moi ca a planté ferme. 413Mo occupés à l'origine. Pendant l'optimisation 810Mo sur 815... Et ce pendant 10min, donc j'ai été obligé de couper le programme à la barbarre.
@Oliv, ca aussi j'utilse mais ca marche pô :cry: J'allume 190Mo, et quand j'éteins (très rare); généralement : 413/480Mo.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

tu as combien de RAM ? 1024, donc il faut qu'il écrive 1024 Mo en mémoire donc si tu as 400mo de mémoire prise, ça fais 400mo (enfin, je ne sais pas ce que fais win des dll non utilisé, si il les écrit sur le dur ou si il les vire définitivement) de mem qui doivent être écrit sur le dur. effectivement, ça peut-être long dans ce cas.

moi, j'ai choisi de ne pas activer la purge auto des dll inutilisées histoire que ma ram servent à quelque chose, j'ai pas une config énorme alors gardé les dll des prog que je lance souvent, c'est mieux.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je doit ajouter qu'il faut utiliser l'obtimisation de la ram
plusieur fois d'affilé, on gagne generalement encore de la memoire
surtout la deuxieme fois !! :)

Merci regis !! je vais garder ça comme une pepite !! :)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Je l'ai utilisé plusieures fois et la surprise 8O 63Mo au lieu de 140.
Mais par contre une fois que j'ai réactivé purebasic.....temps de chargement, je clique sur la fenêtre du naviguateur web : identique, j'essai avec une fenêre MSN déjà ouverte et toujours pareil. Donc si ça dégage rien du premier coup, éviter de refaire ou sinon il y aura un temps de rechargement :wink:
Bravo Régis :D
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

j'ai décoré un peu et çà donne un petit prog sympathique à mettre sur le bureau

téléchargeable ici : http://www.serveurperso.com/~flype/PBMonBuild.zip
Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

super cool en plus c'est assorti a mon firewall (atguard ) qui laisse une barre en haut de l'ecran avec le mem look !!
sauf que ta fenetre est un peut plus haute (environ un peut plus que l'epaisseur d'une bordure de fenetre )


pourquoi m'affiche t'il 2916 mhz ?? alors que j'ai un 2,8
je m'attendai a un 27** et des poussieres !! bonne nouvelle
j'ai des mhz en rabe !! :D

je le garde il est trs beau merci :D
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

c'est cool ton truc!
c'est excellent ça marche super!
:D
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

merci regis surtout 8)
tiens pierre, çà va toi ?
pourquoi m'affiche t'il 2916 mhz ?? alors que j'ai un 2,8
je sais pas pourquoi, j'utilise une lib qui me calcule çà pour moi.
chez moi j'ai 1.33Ghz mais il m'affiche 1329 mhz, probablement une histoire d'arrondie encore...
voir ici : http://www.purearea.net/pb/download/use ... pfuncs.zip
Image
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

désolé si je pourri un peu le topic......
tiens pierre, çà va toi ?
ouais ça va, j'avais laché un peu la programmation pour courir après les filles..... :lol:
mais ne pas taquiner Régis et toi Flype ça commence a me manquer alors je reviens..... :lol:
sinan je viens toujours ici pour regarder ce qui ce passe.....
j'en profite pour passer un tit bonjour a tous ceux du forum même ceux qui me connaissent pas
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

peux-tu m'aider regis :?:

j'aimerais pour ce prog ajouter une icone 16*16 dans la systray.
cette icone serait coupé en deux :
1/ 8*16 pour afficher l'état du cpu
2/ 8*16 pour afficher l'état de la ram

l'état est simplement représenté par une couleur qui va du vert au rouge (comme la progressbar).
c'est là que j'ai besoin de toi, il me faudrait cette fonction:

Code : Tout sélectionner

Couleur.l = Degrade(RgbMin.l,RgbMax.l,Pourcentage.l)

CpuCol.l = Degrade($00FF00,$0000FF,CpuLoad)
RamCol.l = Degrade($0000FF,$00FF00,RamLoad)
j'ai vu que tu maitrises bien ce qui touche aux couleurs alors ...
Dernière modification par Flype le sam. 14/août/2004 19:57, modifié 1 fois.
Image
Répondre