Bonsoir tout le monde,
j'alloue des arrays de ushort régulièrement (32768 bytes plusieurs dizaines de fois par seconde) mais du coup la gen 0 est pleine et le garbage collector passe, ce qui cause de sacrées baisses de perfs. Du coup je voulais savoir s'il n'était pas possible d'allouer mes arrays directement en gen 2.
https://www.simple-talk.com/dotnet/perf ... nceptions/ , le #2 semble expliquer mon problème.
Problème de "double allocation"
Re: Problème de "double allocation"
Personne ?
Re: Problème de "double allocation"
tu devrais peut-être nous expliquer pourquoi tu alloues autant de mémoire ? tu as tenté de faire du pooling ?
Développeur Nintendo & PS Vita RIP PSM. Vive moi. Vive Unity. Flappikachu Vita
- artemisart
- Messages : 1893
- Inscription : 21 Juin 2011 19:51
- Localisation : Centre
- Contact :
Re: Problème de "double allocation"
+1 si tu fais du pooling, tes arrays sont déjà passés en gen supérieure donc le GC n'a plus à passer et tu gagne des perfs (et de la mémoire).
PS : allouer tout ça plusieurs dizaines de fois /s ça fait dans les 50-200 Mo / minute, ça parait énorme quand même.
PS : allouer tout ça plusieurs dizaines de fois /s ça fait dans les 50-200 Mo / minute, ça parait énorme quand même.
Re: Problème de "double allocation"
Oui quelques infos :
c'est au niveau des chunks de mon projet voxel. Chaque chunk de 32*32*256 contient 8 slices de 32*32*32 avec l'array de ushort.
J'ai pensé au pooling oui, du coup la mémoire n'augmente que si des joueurs se connectent, mais elle ne diminura pas si un joueur se déconnecte. Ou alors je suis passé à côté d'un truc.
Merci de votre aide
c'est au niveau des chunks de mon projet voxel. Chaque chunk de 32*32*256 contient 8 slices de 32*32*32 avec l'array de ushort.
J'ai pensé au pooling oui, du coup la mémoire n'augmente que si des joueurs se connectent, mais elle ne diminura pas si un joueur se déconnecte. Ou alors je suis passé à côté d'un truc.
Merci de votre aide
Re: Problème de "double allocation"
Petit up
Re: Problème de "double allocation"
Ta réponse est dans la question. Tu te tire un obus dans le pied à vouloir faire un voxel engine sans pooling. Tu devrais parler d'avantage de la problématique réseau qui te dérange, mais ça ne me parait pas avoir de rapport directe.
Définit ou hardcode ta distance de vue maximal et alloue une pool en conséquence à l'initialisation de ton jeu, ou encore mieux, met en place un buffer tournant de la taille de ton champ de vision: N'oublie pas que les "chunks" à partir desquelles tu génère tes mesh n'ont pas besoin de correspondre à des blocs mémoire, tu peut donc alloué une unique zone mémoire.
Puisque on parle de réseau, les bloc que tu sérialize ne sont pas non plus obligé de correspondre au mesh, il va également être nécessaire de les compresser. Que doit faire le serveur ? a quelle point est-il autoritaire ? a-t-il besoin de les décompresser ou peut-il se contenter de stocker / relayer ?
Je t'invite a lire les 56 pages de ce thread, ainsi que tout les liens qui sont données à tout les posts et tout les liens que tu trouvera sur ces pages web, j'y avais passé beaucoup de temps mais j'y ai appris énormément. Beaucoup de "gros" studio y ont présenté l'architecture de leur voxel engine.
Définit ou hardcode ta distance de vue maximal et alloue une pool en conséquence à l'initialisation de ton jeu, ou encore mieux, met en place un buffer tournant de la taille de ton champ de vision: N'oublie pas que les "chunks" à partir desquelles tu génère tes mesh n'ont pas besoin de correspondre à des blocs mémoire, tu peut donc alloué une unique zone mémoire.
Puisque on parle de réseau, les bloc que tu sérialize ne sont pas non plus obligé de correspondre au mesh, il va également être nécessaire de les compresser. Que doit faire le serveur ? a quelle point est-il autoritaire ? a-t-il besoin de les décompresser ou peut-il se contenter de stocker / relayer ?
Je t'invite a lire les 56 pages de ce thread, ainsi que tout les liens qui sont données à tout les posts et tout les liens que tu trouvera sur ces pages web, j'y avais passé beaucoup de temps mais j'y ai appris énormément. Beaucoup de "gros" studio y ont présenté l'architecture de leur voxel engine.
____________________________________________
Hop Boy
Hop Boy
Re: Problème de "double allocation"
Merci de ta réponse Titan.
Je vais partir sur du pooling
Je vais partir sur du pooling