Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=8f05ddc97608bbd78147f05448f6deccMé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 "memory leak" - à méditer
Aller à la page Précédente  1, 2, 3, 4  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
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

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

MessagePosté le: 19/11/09 00:12    Sujet du message: Citer

Je sais que le post est plus que mort, mais le problème mentionné dans le dernier post de profet n'est il pas plutôt lié au nombre limité de texttags ? (100 pour mémoire)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Diedskill
Ptit Nouveau


Inscrit le: 26 Sep 2009
Messages: 25
Sujets: 5
Spécialité en worldedit: Passer 2 heures à faire un truc qui prend 3 minutes


MessagePosté le: 21/11/09 17:30    Sujet du message: Citer

Peut importe le nombre de fois où je réessaye, moi ça ne marche pas.
Cela m'affiche un message d'erreur et désactive le trigger.
J'ai essayer d'ajouter des espaces, d'en enlever, rien ne marche.
Je convertie n'importe quel déclencheur en texte et il ne fonctionne plus de toute façon ...

J'ai cru comprendre qu'il y avait des logiciels pour éviter cela, mais le seul que j'ai trouvé ne fonctionne pas ...
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Profet (Quantité : 1)

MessagePosté le: 24/11/09 02:00    Sujet du message: Citer

Bantas a écrit:
Je sais que le post est plus que mort, mais le problème mentionné dans le dernier post de profet n'est il pas plutôt lié au nombre limité de texttags ? (100 pour mémoire)

Non je ne pense pas, le lag ne survient que très tard dans la partie, alors que je créais de nombreux texttags toutes les secondes Smile
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 DarkOne
Ptit Nouveau


Inscrit le: 25 Jan 2010
Messages: 3
Sujets: 0



MessagePosté le: 25/01/10 16:51    Sujet du message: Citer

Et si maintenant je ne faisait pas "set udg_ma_variable = null" en GUI ca va aussi creer du leak Question
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

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

MessagePosté le: 30/01/10 13:58    Sujet du message: Citer

Le problème vient des variables locales. En GUI, tu n'as accès qu'aux globales, qui sont en théorie tout le temps utilisées et modifiées. Nullifier les variables globales n'est donc pas nécessaire.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


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

MessagePosté le: 30/01/10 14:16    Sujet du message: Citer

Ca faisait longtemps que n'avais pas étalé mon savoir alors je vais modérer les propos de Bantas.
C'est certes négligeable dans l'hypothèse ou la variable globale sera tôt ou tard setté à une nouvelle valeur, empêchant ici un leak de référence d'handle.
Mais il existe aussi un leak (très mineur) quand un handle est détruit et que la variable qui pointait encore dessus n'est pas immédiatement nullifié.

Par contre il est nécessaire de nullifier la variable si l'handle ainsi référencé est susceptible d'être détruit et qu'il s'agit d'une variable local (même si ce n'est pas aussi simple, mais généraliser ce principe ne fait rien de mal)
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 27/02/10 14:47    Sujet du message: Citer

J'ai une question !
Est-ce que ça, ça créer du leak :
Jass:
function DestroyZarb takes group g returns nothing
call TriggerSleepAction(1)
call DestroyGroup(g)
set g=null
endfunction

function PreDestroyZarb takes nothing returns nothing
local group g=CreateGroup()
call DestroyZarb(g)
endfunction

Le truc c'est que je ne nullifie pas la variable local mais elle ne pointe plus (enfin, je crois) sur le groupe lorsque je le détruis...

EDIT : A d'accord, merci. Moi qui utilisait ExecuteFunc à tout vas parceque je trouvais ça vachement pratique, je vais éviter dans les boucles alors ^^.
_________________


Dernière édition par Tirlititi le 27/02/10 15:24; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


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

MessagePosté le: 27/02/10 15:10    Sujet du message: Citer

Oui car ta variable "g" dans PreDestroyZarb pointe encore sur un groupe, certes détruit, mais rien que cela empêche l'id du groupe d'être recyclé.

Par contre ceci ne leak pas :

Jass:
function DestroyZarb takes group g returns nothing
call TriggerSleepAction(1)
call DestroyGroup(g)
set g=null
endfunction

function PreDestroyZarb takes nothing returns nothing
call DestroyZarb(CreateGroup())
endfunction


Évidemment c'est stupide comme code Rolling Eyes

EDIT :
Tu n'es pas autorisé à utiliser un TriggerSleepAction dans une function appelée via un call, ca crash la function.
Par contre tu peux le faire si la fonction a été appelée via ExecuteFunc, ou .execute en vJass.
De toute façon TSA c'est vraiment boiteux, go timers.

Et ExecuteFunc est le mal absolu, trompe toi de nom de fonction et tu auras un crash in game difficile à identifier.
De plus, c'est lent.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1510
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Créateur de héros (Quantité : 1) Concours de sorts amusants (Quantité : 1)

MessagePosté le: 27/02/10 15:58    Sujet du message: Citer

Troll-Brain a écrit:
Et ExecuteFunc est le mal absolu, trompe toi de nom de fonction et tu auras un crash in game difficile à identifier.
De plus, c'est lent.


C'est extrêmement pratique pour les sorts ne l'oublions pas, nom du sort == nom de la fonction, et void pour les sorts qui n'ont pas de fonctions associés. Je me vois très mal avec un seul déclencheur et une centaine de If / elseif, pour lancer la bonne fonction liée au sort.

Je trouve qu'au contraire le crash est facilement identifiable, c'est toujours un fatal error avec un code d'erreur 0x00000005.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Troll-Brain
Ri1kamoua


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

MessagePosté le: 27/02/10 16:30    Sujet du message: Citer

Brissou de Mourièssou a écrit:
Troll-Brain a écrit:
Et ExecuteFunc est le mal absolu, trompe toi de nom de fonction et tu auras un crash in game difficile à identifier.
De plus, c'est lent.


C'est extrêmement pratique pour les sorts ne l'oublions pas, nom du sort == nom de la fonction, et void pour les sorts qui n'ont pas de fonctions associés. Je me vois très mal avec un seul déclencheur et une centaine de If / elseif, pour lancer la bonne fonction liée au sort.

Je trouve qu'au contraire le crash est facilement identifiable, c'est toujours un fatal error avec un code d'erreur 0x00000005.


Il existe d'autres alternatives tel que SpellEvent.
Même si je l'ai recodé moi même car je ne l'aime pas ...

Tu peux absolument te passer de ExecuteFunc, n'oublions pas le power des function interface.

Je veux bien admettre que c'est toujours la même erreur, mais encore faut t'il la retrouver dans le script cela dit.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


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

MessagePosté le: 27/02/10 17:30    Sujet du message: Citer

Comme le test était faussé par l'emploi de TriggerSleepAction, je confirme que l'id n'est pas recyclé :

Jass:
function DestroyZarb takes group g returns nothing
//call TriggerSleepAction(1)
call DestroyGroup(g)
set g=null
endfunction

function PreDestroyZarb takes nothing returns nothing
local group g=CreateGroup()
call BJDebugMsg(I2S(GetHandleId(g)))
call DestroyZarb(g)
//set g = null
endfunction


Enlève les "//" dans PreDestroyZarb et tu verras toujours le même id recyclé.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1510
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Créateur de héros (Quantité : 1) Concours de sorts amusants (Quantité : 1)

MessagePosté le: 27/02/10 20:24    Sujet du message: Citer

Tant que ça fonctionne très bien je garde l'existant. Une seule fois j'ai réalisé de grands changements pour utiliser ton système de Timer ^^
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Troll-Brain
Ri1kamoua


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

MessagePosté le: 27/02/10 20:28    Sujet du message: Citer

Brissou de Mourièssou a écrit:
Tant que ça fonctionne très bien je garde l'existant. Une seule fois j'ai réalisé de grands changements pour utiliser ton système de Timer ^^

Oui bien sûr je peux me permettre de me mettre au goût du jour sachant que je n'ai pondu la moindre map, c'est facile pour moi.
Mais sache qu'en utilisant ExecuteFunc de la sorte, tu ne pourras pas utiliser wc3mapoptimizer, en effet comment peut t'il deviner comment gérer les appel de ExecuteFunc tout en raccourcissant les noms de fonctions ?

A propos, tu crois que le système de Timer t'apporte quelque chose ou c'est basiquement le même résultat que X timers avec TimerUtils ?
_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 28/02/10 00:48; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1510
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Concours de sorts amusants (Quantité : 1) Créateur de héros (Quantité : 1)

MessagePosté le: 28/02/10 00:48    Sujet du message: Citer

Troll-Brain a écrit:
Oui bien sûr je peux me permettre de me mettre au goût du jour sachant que je n'ai pondu la moindre map, c'est facile pour moi.
Mais sache qu'en utilisant ExecuteFunc de la sorte, tu ne pourras pas utiliser wc3mapoptimizer, en effet comment peut t'il deviner comment gérer les appel de ExecuteFunc tout en raccourcissant les noms de fonctions ?


En effet je n'utilisais pas cette option, je n'utilise même plus l'optimizer depuis le patch de la mort, ça plante tout.

Troll-Brain a écrit:
A ce propos, tu crois que le système de Timer t'apporte quelque chose ou c'est basiquement le même résultat que X timers avec TimerUtils ?


Ca me donne bonne conscience surtout, et donner de l'intérêt à ce que tu fais xD. Même avant j'utilisais seulement quelques timers pour faire du regroupement. Franchement je n'ai pas constaté de différences, on gagne peut être un 1 centième de temps en temps.
Donc pour le joueur aucune différence. J'espère que tu nous sortiras une map sous SC2 et ne surtout pas t'engouffrer dans du speedfreak, need faire un topic "Mon avis sur le speedfreak - à méditer"
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
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: 28/02/10 00:53    Sujet du message: Citer

Citation:
Ca me donne bonne conscience surtout, et donner de l'intérêt à ce que tu fais xD. Même avant j'utilisais seulement quelques timers pour faire du regroupement. Franchement je n'ai pas constaté de différences, on gagne peut être un 1 centième de temps en temps.
Donc pour le joueur aucune différence. J'espère que tu nous sortiras une map sous SC2 et ne surtout pas t'engouffrer dans du speedfreak, need faire un topic "Mon avis sur le speedfreak - à méditer"

Loul, tellement vrai.
Ce qui est sûr, c'est que je ne mapperais pas tant que l'on n'aura pas un vGalaxy, Vexorian ne se dit pas partant pour le faire mais je ne doute pas qu'il y a d'or et déjà des personnes sur le starting block.
Ca me fait un peu <grossièreté> la syntaxe C like, mais je m'adapterais.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
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 Précédente  1, 2, 3, 4  Suivante
Page 3 sur 4

 
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