Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.phpMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Mon avis sur les "leaks" : quelques calculs
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 max-4938
Floodeur prématuré


Inscrit le: 25 Juil 2008
Messages: 407
Sujets: 68



MessagePosté le: 21/08/08 10:28    Sujet du message: Mon avis sur les "leaks" : quelques calculs Citer

Bonjour,

Comme certains d'entre vous on peut-être déjà pu le constater, je me préoccupe beaucoup de l'optimisation de ma map, étant donné que je veux à tout prix éviter le lagg en pleine partie. (voir topics sur les fuites de mémoire...)

J'ai donc fais quelques tests avec des déclencheurs très simples :
(je ne garantis pas l'exactitude de ces calculs)

Premier test : leak maximal :
Gui:
Trigger:
Collapse Evénements
Temps - Every 0.05 seconds of game time
Collapse Actions
Unité - Create 1 Prêtre for Joueur 1 (Rouge) at (Center of Playable map area)
Unité - Hide (Last created unit)
Unité - Add a 0.02 second Générique expiration timer to (Last created unit)

La map passe de 90 Mo à 120 Mo en 30 secondes.

Deuxième test : on retire du jeu les unités inutiles :
Gui:
Trigger:
Collapse Evénements
Temps - Every 0.05 seconds of game time
Collapse Actions
Collapse Groupe unité - Pick every unit in (Units of type Prêtre) and do (Actions)
Collapse Boucle - Actions
Unité - Remove (Picked unit) from the game
Unité - Create 1 Prêtre for Joueur 1 (Rouge) at (Center of playable map aera)
Unité - Hide (Last created unit)
Unité - Add a 0.02 second Générique expiration timer to (Last created unit)

Et là, grande surprise :
La map passe de 90 à 95 Mo en 30 secondes.

Dernier test : leak minimal grâce aux tuto du site :
Gui:
Trigger:
Collapse Evénements
Temps - Every 0.05 seconds of game time
Collapse Actions
Set Point = (Center of (Playable map area))
Custom script:   set bj_wantDestroyGroup = true
Collapse Groupe unité - Pick every unit in (Units of type Prêtre) and do (Actions)
Collapse Boucle - Actions
Unité - Remove (Picked unit) from the game
Unité - Create 1 Prêtre for Joueur 1 (Rouge) at Point facing Orientation bâtiment par défaut degrees
Unité - Hide (Last created unit)
Unité - Add a 0.02 second Générique expiration timer to (Last created unit)
Custom script:   call RemoveLocation(udg_Point)

La map passe de 90 Mo à 93 Mo en 30 secondes

Il s'agit donc de combiner la méthode de "remove unit" avec celle des "remove point" et "remove groupe unité".

Ma question est : pourquoi dans les tutoriaux on parle surtout des points et des groupes d'unités, alors que les unités utilisent encore plus de mémoire ?
_________________


Dernière édition par max-4938 le 22/08/08 07:31; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 max-4938
Floodeur prématuré


Inscrit le: 25 Juil 2008
Messages: 407
Sujets: 68



MessagePosté le: 21/08/08 10:32    Sujet du message: Citer

Pourquoi il faut utiliser la fonction "remove unit" ?
Les générique expiration ne suffisent pas ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

MessagePosté le: 21/08/08 11:34    Sujet du message: Citer

Il reste encore le cadavre et sa décomposition.
Si on remove il disparait complètement de la carte.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Darkfeyt
Floodeur prématuré


Inscrit le: 22 Nov 2007
Messages: 677
Sujets: 27
Spécialité en worldedit: Jamais sortir ses projets ?


MessagePosté le: 21/08/08 13:47    Sujet du message: Citer

Shocked

Ta façon de voir les choses me parait un peu étrange. Razz

Quand ont parle de leaks , ont parle d'utilisation de mémoire inutile , imagine tu crée un point , tu l'utilise , puis tu perd ses coordonné (donc tu ne t'en sert plus jamais).

La le point utilisera de la mémoire pour rien , hors ont crée rarement des unité pour s'en servir dans des fonction puis les hide.(Il y a souvent des solutions plus simple)

Donc les leaks d'unité arrive rarement (habituellement ont préfère la remove que la laissé hide pendant toutes la partie) (même si le leaks n'est pas vrai car tu peut toujours retrouvé ton unité) , alors que les points ne sont pas vraiment ré-utilisable (il vaut mieux les crée / supprimé que tenté de les retrouvé) , donc les unité ne sont rarement de réel "leaks".

L'handle d'une unité après sa mort fini par se vidé d'elle même.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 max-4938
Floodeur prématuré


Inscrit le: 25 Juil 2008
Messages: 407
Sujets: 68



MessagePosté le: 21/08/08 13:51    Sujet du message: Citer

Oui, mais l'unité met un certain temps à disparaître complètement une fois qu'elle est morte.
C'est ce point que je souligne : une fois que l'unité est morte, elle n'est plus utile (nous sommes d'accord là dessus ?) mais pourtant elle consomme de la mémoire.
Il faut donc la "remove", sous peine de voir l'utilisation de la mémoire monter en flèche.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Darkfeyt
Floodeur prématuré


Inscrit le: 22 Nov 2007
Messages: 677
Sujets: 27
Spécialité en worldedit: Jamais sortir ses projets ?


MessagePosté le: 21/08/08 14:31    Sujet du message: Citer

Est-tu sur que si ont attend pas un moment (1-2 mn) , les unités finissent par lâché la mémoire ?

J'ai jamais fait le test mais sa me parait logique.

Fait un test de ton truc sur une durée de 10 mn , je pense que la ram commencera a être un peu plus stable (elle grimpera toujours je pense pour des raison d'enregistrement de se qui se passe mais montera moins).
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 21/08/08 16:43    Sujet du message: Citer

La mémoire est libérée quand l'unité a fini sa décomposition et disparait.
C'est pas un leak, simplement tu crée plus d'unités que le temps de les faire disparaitre.
Genre on créé des unités toutes les 0.05 s koa ...
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 max-4938
Floodeur prématuré


Inscrit le: 25 Juil 2008
Messages: 407
Sujets: 68



MessagePosté le: 21/08/08 16:57    Sujet du message: Citer

Bah, pour faire un sort, ça peut arriver.

On pourrait remplacer l'unité par un effet spécial, mais si on veut modifier sa taille, on fait comment ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 21/08/08 17:01    Sujet du message: Citer

Je voulais dire ce n'est pas tout le long du jeu comme dans ton exemple.
Les unités ont le temps d'être supprimées naturellement.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2012
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 21/08/08 20:32    Sujet du message: Citer

Dans les tutoriels sur les fuites de mémoires je ne parle que des points et groupes d'unités parce que ce sont les seuls que l'on ne peut pas supprimer en GUI. Il s'agissait avant tout de donner une méthode afin de les supprimer, et non pas un court magistrale sur toutes les possibilités de fuites.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 max-4938
Floodeur prématuré


Inscrit le: 25 Juil 2008
Messages: 407
Sujets: 68



MessagePosté le: 21/08/08 21:51    Sujet du message: Citer

Et pourquoi ne ferait-on pas un "court magistrale sur toutes les possibilités de fuites" ?

Après tout, les points et les groupes d'unité ne sont qu'une petite partie de tout ce qui peut faire ramer une map ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Darkfeyt
Floodeur prématuré


Inscrit le: 22 Nov 2007
Messages: 677
Sujets: 27
Spécialité en worldedit: Jamais sortir ses projets ?


MessagePosté le: 21/08/08 23:29    Sujet du message: Citer

Car se sont les seuls que tes sensé faire , les rect(region) leaks si tu les supprime pas , mais habituellement en gui ont en crée pas (même si je crois qu'ont peut).

En gros c'est des leaks que tes pas sensé atteindre , et donc des cas suffisamment particulier pour que si ont doit en dire un , ont doit dire toutes les possibilité de leaks , se qui ferait que personne ne s'y retrouverai et que se serai encore pire.

Et puis les leaks peu nombreux ne sont pas réellement important.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 Rhadamante
Petit flooder


Inscrit le: 28 Aoû 2007
Messages: 1457
Sujets: 24
Spécialité en worldedit: Bêêh hé hé hé !
Médailles: 3 (En savoir plus...)
Créateur de race (Quantité : 1) Grand décorateur (Quantité : 2)

MessagePosté le: 21/08/08 23:56    Sujet du message: Citer

max-4938 a écrit:
Et pourquoi ne ferait-on pas un "court magistrale sur toutes les possibilités de fuites" ?


Parce que si t'as compris le principe, t'en as pas besoin.

Ayane a écrit:
[...] je ne parle que des points et groupes d'unités parce que ce sont les seuls que l'on ne peut pas supprimer en GUI.


Les autres sources de fuites de mémoires, c'est pas difficile de les gérer et c'est possible en GUI. Et quand c'est pas évident c'est pour des trucs qui, à moins de chercher la petite bête, passeront totalement inaperçu.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 max-4938
Floodeur prématuré


Inscrit le: 25 Juil 2008
Messages: 407
Sujets: 68



MessagePosté le: 22/08/08 07:32    Sujet du message: Citer

Oh, tu sais, je n'aurais pas craché sur un tuto avec toutes les possibilités de fuite... ^^


J'ai vu sur un map quelqu'un qui effaçait ses variables unités en mettant par exemple :
Set variable (unité) = prédéfini - pas d'unité
ça peut fonctionner ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 22/08/08 09:52    Sujet du message: Citer

Si c'est une variable local ça sert juste a éviter le leak qui est produit lorsqu'on ne met pas une variable locale handle sur null a la fin de la fonction.
Si c'est une variable globale, ça ne sert a rien.

Et dans tout les cas, une affectation sur une variable n'aura jamais aucun effet sur l'unité qui est pointé par cette variable.
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Aller à la page 1, 2  Suivante
Page 1 sur 2

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com