SPRITES CACHE MANAGER POUR GESTION MÉMOIRE DE GRAND NOMBRE DE SPRITES DANS VOTRE

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 17 août 2006 à 20:54
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 12 juil. 2007 à 01:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39163-sprites-cache-manager-pour-gestion-memoire-de-grand-nombre-de-sprites-dans-votre-application-softvalues

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
12 juil. 2007 à 01:06
Ma foi en générale je gere simplement mes buffers.. ;o) et je gere plusieurs 100ene de miliers d objets ;o) ... et jamais plus de quelques centaine en memoire.. ;o) ..

Ceci dit je regarderai à l occasion si tes class peuvent s adapter a un log de carto que j avai fait ;o) avec des images de plusieurs Go ;o) pôur voir si les perf sont meilleur que la soluce que j ai adopter ;o)
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
11 juil. 2007 à 21:23
eh ben essaie avec ce code si tu passes les out of memory ou non! Meme 1G0 de Ram ne permettent pas d'allouer autant d'objets variables java. C'est un peu pareil en C, mais Java simplifie la donne avec les References. Mon PC/Mac tourne avec 1Go de RAM, mais sans utiliser ce cache, il est impossible de charger toutes les resources des applications. Cela allant de 10 à 10'000 objets simultanément, l'idée d'avoir un "cache manager" devient essentielle. :D
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
11 juil. 2007 à 16:31
En meme ;o) temps le out of memory maintenant ;o) faut vraiment le vouloir ... tu allous 1Go au prog et ca te laisse pas mal de marge ;o).... (déjà explosé qd meme) ;o)

Franchement je la trouve bien complex pour si peu de chose ;o) ...
Mais cela merite d etre testé ;o) si il a vraiment une plusvalue de perf ;o) sur les grosse images !!!
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
21 oct. 2006 à 04:10
la ram elle tourne autour de la nanoseconde... donc si je n'active pas de swap disk ca devrait marcher a 1ms....
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
21 oct. 2006 à 04:08
c'est sur. j'utilise le png. maintenant je sais pas a quelle fréquence régler le timer du cache.... est-ce que le disque est indépendant du timer? un <<DD tourne à 9ms env.>> si le cleanup() intervient plus tot que la prochaine boucle de lecture/ecriture du DD ça fait quoi?
bref, si tu testes ce cache une fois j'attends un feedback.. :)
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
21 oct. 2006 à 02:54
Salut deja oublie le format bitmap il est trop lourd prefere le png (libre de licences) ou le gif(sous licence sun) qui sont les format portables les plus compressé possible. maintenant si tu ecris sur le DDle perf seront bidon.... cause du temps d'acces sur le disque sauf pour les pc dont le DD est en SATA ou raid 0
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
21 oct. 2006 à 02:47
l'idée c'est de mettre en mémoire le moins de données possibles en simultanées... je zip les données et je gagne la compression.
C'est pas sur de pouvoir tout charger en meme temps.
Tout se passera en ram, si le zip et sur une variable virtuelle.
Tu n'as pas d'exemple de jeu avec des animations d'images bitmap? ça je cherche... ;)
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
21 oct. 2006 à 02:39
Salut,

justement non.... pour etre viable le dezip doit se faire en ram et la question ressource memoire c'est pas gagné en plus si il vient d'un disque qui est en ide je te racompte pas la merde question temps d'acces......... et si le jeu est pres du outofmemory c'est mort jamais tu dezip.....
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
21 oct. 2006 à 02:35
Ouais je vois ce que tu veux dire. J'en suis pas encore au niveaux de jeu, mais je cherche le moyen de charger les animations en cache "avant" ou "pendant" l'affichage de l'anim.
donc les softrefence sont utiles, mais après il revient quand meme un overflow de buffer, meme s'il intervient plus tard que sans le cache activé; évidemment. Si je regarde mieux, il doit être possible de bien contrôler le rafraichissement de cache (cleanup()) et j'espère l'accélérer avec Zip.
:)
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
21 oct. 2006 à 02:17
Salut,

par exemple tu bufferise les niveaux soit imagine un jeu à 3 niveaux muiltidirectionnel (soit le joueur peut passer du niveau 2 au 1, du 3 au 2 et du 3 au 1 a condition qu'il ai passé le niveau 2, tu vois ce que je veux dire ?), le joueur arrive au niveau 2, la tu serialise le niveau 1 et si le joueur veut finaliser le niveau 1 tu le deserialise en gardant l'etat de ses objets trouvé (les monstres ou autre tu le re initialises).
autre exemple le level 2 est trop gros pour le mettre en rame donc tu pres calcul le temps de buffurisation et tu debuffuerise en trame de fond pour que le joueur puisse poursuivre son level sans problèmes
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
21 oct. 2006 à 01:48
bufferiser quels états? là je vois en fait que c'est pas important le cache disque, mais que la compression par exemple nécessite de classes serializables donc c pas évident...
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
19 oct. 2006 à 18:40
Salut,

avec les temps d'acces sur le disque je ne pense pas que le fait de swaper te fasse gagner en perf.
maintenant si tu as plus de palce et que tu leve un outofmemory tu peux swapper mais le prob c'est que meme si tu free la ram avec un invoke du GC et du finalizer tu auras toujours un prob de ram donc tu ne cesseras de swaper ce qui est vraiment mauvais pour les perfs.
Ce que tu peux faire c'est buffuriser les etats en serialisant quand il faut comme cela des que tu approche de la zone à deserializer tu deserialize.... bref les acces disque sont à utiliser avec prudence surtout pour un jeu
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
19 oct. 2006 à 18:00
est-ce qu'une gestion d'un cache sur disque peut encore améliorer les performances?
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 août 2006 à 18:52
Et puis ca serait bien aussi d'avoir une description de ta source un peu plus, comment dire... descriptive ?

Car ca donne pas franchement envie d'essayer ton code...

DarK Sidious
broumbroum Messages postés 39 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 10 septembre 2007
17 août 2006 à 21:33
nous allons ajouter les commentaires destinés à la javadoc... ;)
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
17 août 2006 à 20:54
Salut,

merci d'enlever les blocs de codes commenté et de commenter ton code !!!
Rejoignez-nous