Problème de "double allocation"

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Matt45400
Messages : 131
Inscription : 31 Oct 2013 12:58
Localisation : Orléans / Paris

Problème de "double allocation"

Message par Matt45400 » 11 Sep 2015 19:48

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.

Matt45400
Messages : 131
Inscription : 31 Oct 2013 12:58
Localisation : Orléans / Paris

Re: Problème de "double allocation"

Message par Matt45400 » 14 Sep 2015 17:38

Personne ? :?

Avatar de l’utilisateur
minirop
Messages : 184
Inscription : 25 Juin 2014 12:58

Re: Problème de "double allocation"

Message par minirop » 14 Sep 2015 23:09

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

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: Problème de "double allocation"

Message par artemisart » 15 Sep 2015 01:08

+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.

Matt45400
Messages : 131
Inscription : 31 Oct 2013 12:58
Localisation : Orléans / Paris

Re: Problème de "double allocation"

Message par Matt45400 » 15 Sep 2015 11:14

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

Matt45400
Messages : 131
Inscription : 31 Oct 2013 12:58
Localisation : Orléans / Paris

Re: Problème de "double allocation"

Message par Matt45400 » 22 Sep 2015 18:59

Petit up

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: Problème de "double allocation"

Message par Titan » 22 Sep 2015 22:43

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.
____________________________________________
Hop Boy

Matt45400
Messages : 131
Inscription : 31 Oct 2013 12:58
Localisation : Orléans / Paris

Re: Problème de "double allocation"

Message par Matt45400 » 23 Sep 2015 22:03

Merci de ta réponse Titan.
Je vais partir sur du pooling

Répondre

Revenir vers « Scripting Javascript, C# et Boo »