online faq recherche accueil
 

Il y a 61 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

mes spawns de monstres leak !

 
n°4589418
Maximaxou
rejoignez les fidèles du JASS
Posté le 17-04-2007 à 05:51:49  profilanswer
 

   Le sujet du topic résume bien la situation. Vous voyez Polar Escape 3, les deux derniers niveaux ? C'est ça que je suis en train de faire. (exactement, puisque que je refais la map de LimiteR). Les monstres apparaissent, vont à un endroit, puis disparaissent. Donc il devrait y avoir un nombre constant de monstres sur la map. Or la mémoire monte, monte, monte. Voici mes triggers de spawn :
 

Code :
  1. function Trig_lvl6_Monsters_appear_top_Actions takes nothing returns nothing
  2.     local unit troll
  3.     local rect regAppear = gg_rct_lvl6_monster_appear_top
  4.     local rect regDisappear = gg_rct_lvl6_monster_disappear_down
  5.     local real minX = GetRectMinX( regAppear )
  6.     local real maxX = GetRectMaxX( regAppear )
  7.     local real randomX = GetRandomReal( minX, maxX )
  8.     local real appearY = GetRectCenterY( regAppear )
  9.     local real disappearY = GetRectCenterY( regDisappear )
  10.     local real angle = 270
  11.     local integer custVal = 1
  12.     set troll = CreateUnit( Player(11), 'n000', randomX, appearY, angle ) 
  13.     call SetUnitUserData( troll, custVal )
  14.     call ShowUnit( troll, false )
  15.     call ShowUnit( troll, true  )
  16.     call IssuePointOrder( troll, "move", randomX, disappearY )
  17. endfunction
  18.    
  19. //===========================================================================
  20. function InitTrig_lvl6_Monsters_appear_top takes nothing returns nothing
  21.     set gg_trg_lvl6_Monsters_appear_top = CreateTrigger(  )
  22.     call DisableTrigger( gg_trg_lvl6_Monsters_appear_top )
  23.     call TriggerRegisterTimerEventPeriodic( gg_trg_lvl6_Monsters_appear_top, 0.35 )
  24.     call TriggerAddAction( gg_trg_lvl6_Monsters_appear_top, function Trig_lvl6_Monsters_appear_top_Actions )
  25. endfunction
Code :
  1. function Trig_lvl6_Monsters_appear_left_and_right_Actions takes nothing returns nothing
  2.     local unit troll
  3.     local rect regAppear
  4.     local rect regDisappear
  5.     local real minY
  6.     local real maxY
  7.     local real randomY
  8.     local real appearX
  9.     local real disappearX
  10.     local real angle
  11.     local integer custVal
  12. //appear left
  13.     set regAppear = gg_rct_lvl6_monster_appear_left
  14.     set regDisappear = gg_rct_lvl6_monster_disappear_right
  15.     set minY = GetRectMinY( regAppear )
  16.     set maxY = GetRectMaxY( regAppear )
  17.     set randomY = GetRandomReal( minY, maxY )
  18.     set appearX = GetRectCenterX( regAppear )
  19.     set disappearX = GetRectCenterX( regDisappear )
  20.     set angle = 0
  21.     set custVal = 3
  22.     set troll = CreateUnit( Player(11), 'n000', appearX, randomY, angle ) 
  23.     call SetUnitUserData( troll, custVal )
  24.     call ShowUnit( troll, false )
  25.     call ShowUnit( troll, true  )
  26.     call IssuePointOrder( troll, "move", disappearX, randomY )
  27. //appear right
  28.     set regAppear = gg_rct_lvl6_monster_appear_right
  29.     set regDisappear = gg_rct_lvl6_monster_disappear_left
  30.     set minY = GetRectMinY( regAppear )
  31.     set maxY = GetRectMaxY( regAppear )
  32.     set randomY = GetRandomReal( minY, maxY )
  33.     set appearX = GetRectCenterX( regAppear )
  34.     set disappearX = GetRectCenterX( regDisappear )
  35.     set angle = 0
  36.     set custVal = 2
  37.     set troll = CreateUnit( Player(11), 'n000', appearX, randomY, angle ) 
  38.     call SetUnitUserData( troll, custVal )
  39.     call ShowUnit( troll, false )
  40.     call ShowUnit( troll, true  )
  41.     call IssuePointOrder( troll, "move", disappearX, randomY )
  42. endfunction
  43. //===========================================================================
  44. function InitTrig_lvl6_Monsters_appear_left_and_right takes nothing returns nothing
  45.     set gg_trg_lvl6_Monsters_appear_left_and_right = CreateTrigger(  )
  46.     call DisableTrigger( gg_trg_lvl6_Monsters_appear_left_and_right )
  47.     call TriggerRegisterTimerEventPeriodic( gg_trg_lvl6_Monsters_appear_left_and_right, 0.15 )
  48.     call TriggerAddAction( gg_trg_lvl6_Monsters_appear_left_and_right, function Trig_lvl6_Monsters_appear_left_and_right_Actions )
  49. endfunction
Code :
  1. function Trig_lvl7_Troll_spawn_Actions takes nothing returns nothing
  2.     local unit troll
  3.     local integer noTrollInd = GetRandomInt( 0, 3 )
  4.    
  5.     local integer i = 0
  6.     loop
  7.         exitwhen ( i > 3 )
  8.         if ( i != noTrollInd ) then
  9.             set troll = CreateUnitAtLoc( Player(11), 'n000', udg_lvl7_monster_spawn_pos[ i ], 270 )
  10.             call ShowUnit( troll, false )
  11.             call ShowUnit( troll, true  )
  12.             call IssuePointOrderLoc( troll, "move", udg_lvl7_monster_remove_pos[ i ] )
  13.         endif
  14.         set i = i + 1
  15.     endloop
  16. endfunction
  17. //===========================================================================
  18. function InitTrig_lvl7_Troll_spawn takes nothing returns nothing
  19.     set gg_trg_lvl7_Troll_spawn = CreateTrigger(  )
  20.     call DisableTrigger( gg_trg_lvl7_Troll_spawn )
  21.     call TriggerRegisterTimerEventPeriodic( gg_trg_lvl7_Troll_spawn, 4.50 )
  22.     call TriggerAddAction( gg_trg_lvl7_Troll_spawn, function Trig_lvl7_Troll_spawn_Actions )
  23. endfunction


Voila qui prouve que je n'ai pas totalement cerné le leak.
 
 
 


Message édité par Maximaxou le 17-04-2007 à 05:58:13

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589419
Maximaxou
rejoignez les fidèles du JASS
Posté le 17-04-2007 à 05:54:46  profilanswer
 

Et voici les triggers de déspawns :

Code :
  1. lvl6 Monsters disappear down
  2.     Evénements
  3.         Unité - A unit enters lvl6 monster disappear down <gen>
  4.     Conditions
  5.         (Owner of (Triggering unit)) Egal à Joueur 12 (Marron)
  6.     Actions
  7.         Custom script:   local unit U = GetTriggerUnit()
  8.         Custom script:   if ( GetUnitUserData( U ) == 1 ) then
  9.         Custom script:       call RemoveUnit( U )
  10.         Custom script:   endif
Code :
  1. lvl6 Monsters disappear left
  2.     Evénements
  3.         Unité - A unit enters lvl6 monster disappear left <gen>
  4.     Conditions
  5.         (Owner of (Triggering unit)) Egal à Joueur 12 (Marron)
  6.     Actions
  7.         Custom script:   local unit U = GetTriggerUnit()
  8.         Custom script:   if ( GetUnitUserData( U ) == 2 ) then
  9.         Custom script:       call RemoveUnit( U )
  10.         Custom script:   endif
Code :
  1. lvl6 Monsters disappear right
  2.     Evénements
  3.         Unité - A unit enters lvl6 monster disappear right <gen>
  4.     Conditions
  5.         (Owner of (Triggering unit)) Egal à Joueur 12 (Marron)
  6.     Actions
  7.         Custom script:   local unit U = GetTriggerUnit()
  8.         Custom script:   if ( GetUnitUserData( U ) == 3 ) then
  9.         Custom script:       call RemoveUnit( U )
  10.         Custom script:   endif


Je ne releaserai po de map qui leak (contrairement à d'autres), donc il faut absolument que je sache d'où viennent les leaks :/


Message édité par Maximaxou le 17-04-2007 à 05:59:58

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589420
Maximaxou
rejoignez les fidèles du JASS
Posté le 17-04-2007 à 06:05:01  profilanswer
 

Au fait ça :

Code :
  1. call ShowUnit( troll, false )
  2. call ShowUnit( troll, true  )


Ca sert juste à faire apparaître le point des monstres sur la minicarte (comme ils ont infestation)


Message édité par Maximaxou le 17-04-2007 à 06:09:13

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589426
lunatique
Posté le 17-04-2007 à 07:55:41  profilanswer
 

  1. function Trig_lvl7_Troll_spawn_Actions takes nothing returns nothing
   2.
   3.     local unit troll
   4.     local integer noTrollInd = GetRandomInt( 0, 3 )
   5.    
   6.     local integer i = 0
   7.     loop
   8.         exitwhen ( i > 3 )
   9.         if ( i != noTrollInd ) then
  10.             set troll = CreateUnitAtLoc( Player(11), 'n000', udg_lvl7_monster_spawn_pos[ i ], 270 )
  11.             call ShowUnit( troll, false )
  12.             call ShowUnit( troll, true  )
  13.             call IssuePointOrderLoc( troll, "move", udg_lvl7_monster_remove_pos[ i ] )
  14.         endif
  15.         set i = i + 1
  16.     endloop
  17.
  18. endfunction
  19.
  20. //===========================================================================
  21. function InitTrig_lvl7_Troll_spawn takes nothing returns nothing
  22.     set gg_trg_lvl7_Troll_spawn = CreateTrigger(  )
  23.     call DisableTrigger( gg_trg_lvl7_Troll_spawn )
  24.     call TriggerRegisterTimerEventPeriodic( gg_trg_lvl7_Troll_spawn, 4.50 )
  25.     call TriggerAddAction( gg_trg_lvl7_Troll_spawn, function Trig_lvl7_Troll_spawn_Actions )
  26. endfunction
 
Quand tu fais CreateUnitAtLoc, tu as une location, et malheureusement tu ne suprime pas ta location à chaque fois.

n°4589427
Maximaxou
rejoignez les fidèles du JASS
Posté le 17-04-2007 à 09:21:34  profilanswer
 

sauf que cette location est une variable globale, donc c'est toujours la même. Autrement dit, cette fonction ne crée pas de location. Ceci crée des locations :

Code :
  1. function Trig_lvl7_Init_spawn_and_remove_positions_Actions takes nothing returns nothing
  2.     local rect spawn_reg  = gg_rct_lvl7_monster_spawn_reg
  3.     local rect remove_reg = gg_rct_lvl7_monster_remove_reg
  4.     local real minX = GetRectMinX( spawn_reg )
  5.     local real maxX = GetRectMaxX( spawn_reg )
  6.     local real X
  7.     local real spawnY = GetRectCenterY( spawn_reg )
  8.     local real removeY = GetRectCenterY( remove_reg )
  9.     local integer number_of_trolls = 4
  10.     local real intervalle = ( maxX - minX ) / ( number_of_trolls - 1 )
  11.     local integer i = 0
  12.    
  13.     loop
  14.         exitwhen ( i > 3 )
  15.         set X = minX + ( i * intervalle )
  16.         set udg_lvl7_monster_spawn_pos[ i ] = Location( X, spawnY  )
  17.         set udg_lvl7_monster_remove_pos[ i ] = Location( X, removeY )
  18.         set i = i + 1
  19.     endloop
  20.     call EnableTrigger( gg_trg_lvl7_Troll_spawn )
  21. endfunction
  22. //===========================================================================
  23. function InitTrig_lvl7_Init_spawn_and_remove_positions takes nothing returns nothing
  24.     set gg_trg_lvl7_Init_spawn_and_remove_positions = CreateTrigger(  )
  25.     call TriggerAddAction( gg_trg_lvl7_Init_spawn_and_remove_positions, function Trig_lvl7_Init_spawn_and_remove_positions_Actions )
  26. endfunction


 


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589428
lunatique
Posté le 17-04-2007 à 09:37:26  profilanswer
 

Que ton point soit global ou local, tu le créé pareil; la seule différence c'est que si exemple tu fais :
 
set udg_point = GetUnitLoc(premièreunité)
suivi immédiatement de
set udg_point = GetUnitLoc(deuxièmeunité)
call RemoveLocation(udg_point)
 
Tu leaks; la première location a été mise de côté parce que tu lui as attribuée une nouvelle valeur; or, elle a été créé et tu n'a plus l'opportunité d'aller la chercher.
 
Et non, des réels (x,y) ne sont pas des leaks.  
 
#         set udg_lvl7_monster_spawn_pos[ i ] = Location( X, spawnY  )
#         set udg_lvl7_monster_remove_pos[ i ] = Location( X, removeY )
 
ça, ^ca peut le devenir si tu ne les enlèves pas.

n°4589448
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 17-04-2007 à 17:21:18  profilanswer
 

Je ne suis pas d'accord avec toi Lunatique il crée ses points uniquement à l'initialisation, il ne fait que les utiliser par la suite il n'en crée pas (d'ailleurs ca soulage fortement le processeur cette méthode).

 

Je pense plutôt que la mémoire n'a pas le temps d'être libérée n'ayant repéré aucun leak , mais je peux me tromper bien sûr.

 

As tu testé de stopper l'exécution des triggers et de voir si la mémoire occupée diminue ?

 
Code :
  1. CreateUnitAtLoc         takes player id, integer unitid, location whichLocation, real face returns unit

nulle création de point dans cette fonction ou alors c'est une farce de Blizzou

 


Message édité par Troll-Brain le 17-04-2007 à 17:24:19

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589457
lunatique
Posté le 17-04-2007 à 20:05:16  profilanswer
 

Tout ce qui contient Loc dans sa fonction demande un point. Si tu fais CreateUnitAtLoc où loc est "Center of Playable map area", bien même si le point "center of playable map area" existe déjà, c'est un leak car tu créé un point. Si ses locations sont uniquements créées à l'initiation et qu'il s'en sert seulement par la suite pour ordonner des choses et qu'elles ne changent pas de valeur, non ce n'est pas un leak, c'est une bonne méthode d'ailleurs.

n°4589458
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 17-04-2007 à 20:37:03  profilanswer
 

lunatique a écrit :

Tout ce qui contient Loc dans sa fonction demande un point. Si tu fais CreateUnitAtLoc où loc est "Center of Playable map area", bien même si le point "center of playable map area" existe déjà, c'est un leak car tu créé un point. Si ses locations sont uniquements créées à l'initiation et qu'il s'en sert seulement par la suite pour ordonner des choses et qu'elles ne changent pas de valeur, non ce n'est pas un leak, c'est une bonne méthode d'ailleurs.

 

C'est ce qu'on te dit depuis tout à l'heure , je sais bien que location = point, mais il ne créé pas de nouveaux points  :D

 

Pour les get bien sûr que ca leak car ce sont des fonctions qui return une location ...

 

Ah si en fait j'ai vu un leak les strings ...
Utilise des variables strings plutôt que les strings eux même.

 

donc au lieu de "move" utilise une variable globale string ayant pour valeur "move"


Message édité par Troll-Brain le 17-04-2007 à 20:51:02

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589459
lunatique
Posté le 17-04-2007 à 20:59:28  profilanswer
 

C'est pas vrai, un string ça leak aussi!!??!!

n°4589461
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 17-04-2007 à 21:03:48  profilanswer
 

Oui et on peut rien y faire à part éviter d'en utiliser, les remplacer par des variables quand on doit utiliser le même plusieurs fois.

 

Enfin c'est un leak mineur mais réel

 

http://worldedit.free.fr/forum/viewtopic.php?t=1959

 

C'est d'ailleurs la raison d'existence des string extérieurs (quand tu créé un string en gui )

 


Message édité par Troll-Brain le 17-04-2007 à 21:04:19

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589462
lunatique
Posté le 17-04-2007 à 21:09:02  profilanswer
 

C'est horrible. Mais comme c'est simplement quelques leaks mineurs, ça ne vaut peut-être pas la peine de refaire le script au complet car je m'en sert partout.
 
Mais je cherche présentement dans les natives, si on fait exemple un local string texte = "Allo", comment on le suprime par la suite? Je ne trouve pas la fonction RemoveString ou DestroyString.


Message édité par lunatique le 17-04-2007 à 21:10:40
n°4589463
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 17-04-2007 à 21:14:52  profilanswer
 

D'où le " on ne peut rien faire ... "

 

Enfin si comme je l'ai dit si tu l'utilises ne serait ce que 2 fois dans une fonction tu peux faire cela :

 
Code :
  1. local string S = "blabla"
  2. call BJDebugMsg(S)
  3. call BJDebugMsg(S)
 

On peut juste limiter la casse, evidemment pour les string tel que "move" tu peux utiliser une globale car y'a des chances que tu en auras besoin dans plusieurs fonctions


Message édité par Troll-Brain le 17-04-2007 à 21:17:14

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589466
lunatique
Posté le 17-04-2007 à 21:22:02  profilanswer
 

bah habituellement j'appel tout le temps mon string "nom". Sinon, tempis pour les leaks de string si il n'y a rien à faire. Ça leakera, j'ai enlevé tous les leaks mais je ne m'amuserai pas à attribuer à une variable globale et/ou un string du gamecache une valeur différente à chaque fois que je vais aller rechercher lors d'une utilisation aussi stupide que "order" ou quoi que se soit.

n°4589467
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 17-04-2007 à 21:23:09  profilanswer
 

Rebelle  :pfff:


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589468
lunatique
Posté le 17-04-2007 à 21:24:36  profilanswer
 

Bien non faut pas exagérer, si il n'existe que d'autre moyen que de se servir d'un seul et unique string bah là pour les quelques octets de leaks que ça fera, faudrat vivre avec ^^!

n°4589469
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 17-04-2007 à 21:27:40  profilanswer
 

lunatique a écrit :

Bien non faut pas exagérer, si il n'existe que d'autre moyen que de se servir d'un seul et unique string bah là pour les quelques octets de leaks que ça fera, faudrat vivre avec ^^!


dans une fonction périodique ca suck aussi, enfin c'est toi qui voit
 


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589470
lunatique
Posté le 17-04-2007 à 21:30:52  profilanswer
 

Si je vois un jours que ça commence à ramer à cause de ça je saute en bas du pont.

n°4589471
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 17-04-2007 à 21:32:30  profilanswer
 

lunatique a écrit :

Si je vois un jours que ça commence à ramer à cause de ça je saute en bas du pont.


Choisis bien ta saison en plein été quand la rivière est asséchée  :D  
 


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589472
lunatique
Posté le 17-04-2007 à 21:33:29  profilanswer
 

lol! ^^

n°4589473
lunatique
Posté le 17-04-2007 à 21:45:45  profilanswer
 

**HS**
 
Je me demandais s'il était possible d'aller chercher les données stockés lorsqu'on modifie une unité dans le gestionaire d'édition. Exemple on change son attaque et son modèle du fantassin. Si on rouvre la map avec un éditeur qui peut aller chercher les fichiers a l'intérieur, dans quel fichier .txt ou bien .slk se trouve les modifications? Je crois que de cette manière, quand on créé une unité personnalisé, on peut tout simplement copier/coller les données de l'unité personnalisé à une unité déjà existante dans Warcraft III (tel le paysan) pour éviter d'avoir à créer des unités différentes de plus (pour faire un load moins long).
 
**FIN HS**

n°4589474
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 17-04-2007 à 22:08:03  profilanswer
 

go wc3campaigns et prends le widgetizer


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589479
Maximaxou
rejoignez les fidèles du JASS
Posté le 18-04-2007 à 06:50:02  profilanswer
 

Citation :

C'est d'ailleurs la raison d'existence des string extérieurs (quand tu créé un string en gui )


    Ahhhhhhhh je comprends maintenant pourquoi ils font ça. Sinon, leak mineur ? Si ça prend 4 octets à chaque création de monstre, ça fait quand mes trois triggers sont en route, 67 octets par seconde (d'après mes calculs). Euh, en effet, il y a pire comme leak.


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589483
Maximaxou
rejoignez les fidèles du JASS
Posté le 18-04-2007 à 08:09:01  profilanswer
 

   On m'a parlé d'un autre leak : lorsque l'on utilise des variables locales qui sont en fait des pointeurs : unités, régions, points...  Si le pointeur n'a pas la valeur nulle à la sortie de la fonction, il reste en mémoire. S'il a la valeur nulle, la variable est alors supprimée. (pour les points, je pense que lorsque l'on fait 'call RemoveLocation( xxx )', le pointeur passe à la valeur nulle)
 
Il me faut donc ajouter ces trois lignes à la fin de mes déclo :

Code :
  1. set troll = null
  2.     set regAppear = null
  3.     set regDisappear = null


Uniquement la première pour le déclo du lvl7 bien sûr.
 

Citation :

Je pense plutôt que la mémoire n'a pas le temps d'être libérée n'ayant repéré aucun leak , mais je peux me tromper bien sûr.
As tu testé de stopper l'exécution des triggers et de voir si la mémoire occupée diminue ?

Je viens de le faire et malheureusment (ou plutôt heureusement), la mémoire diminue légèrement suite à la suppression des monstres. Mais elle est très loin de revenir à l'état initial. Manquerait plus que la mémoire n'ait pas le temps de se libérer. Ouf.


Message édité par Maximaxou le 18-04-2007 à 08:13:13

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589484
Maximaxou
rejoignez les fidèles du JASS
Posté le 18-04-2007 à 08:13:36  profilanswer
 

Un petit peu de mesure physique :
 
     tests sur 660 secondes (mémoire en ko)

Code :
  1. //triggers de spawn off
  2. départ : 135 596
  3. fin : 136 640
  4. leak total : 1044
  5. leak par seconde : 1,6


Code :
  1. //var udg_move + var à null
  2. départ : 138 000
  3. fin :   153 300
  4. leak total : 15 300 ---> 14 256
  5. leak par seconde : 23,2 ---> 21,6


Code :
  1. //Utilisation de "move" et var non à null
  2. départ : 148 440
  3. fin : 165 000
  4. leak total : 16 560 ---> 15 516
  5. leak par seconde : 25,1 ---> 23,5


Code :
  1. //Utilisation de "move" et var à null
  2. départ : 135 800
  3. fin : 151 184
  4. leak total : 15 384 ---> 14340
  5. leak par seconde : 23.3 ---> 21.7


 
leak variables locales non supprimées : 23,5 - 21,7 = 1,8 ko/s
leak des chaines "move" : 21,7 - 21,6 = 0,1 ko/s
 
    Bon je crois qu'on peut se détendre, il faut vraiment y aller pour faire des leaks conséquents avec les chaînes de caractères. Par contre, le leak des variables locales non supprimées n'est pas négligeable. Même si le leak des "move" et des variables non supprimées est présent, on voit bien que c'est autre chose qui provoque la majeure partie des leaks.


Message édité par Maximaxou le 18-04-2007 à 08:18:05

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589514
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 18-04-2007 à 19:56:29  profilanswer
 

Je me demande si le Register event pour une unite entrante/sortante d'un région en gui leak a chaque utilisation de l'évenement ou simplement à l'enregistrement de l'event.

 

Enfin je pense pas quand même, mais tente de remplacer par le register natif en créant au préalable des regions pour tes rectangles


Message édité par Troll-Brain le 18-04-2007 à 19:56:39

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589524
Maximaxou
rejoignez les fidèles du JASS
Posté le 19-04-2007 à 11:58:11  profilanswer
 

Attends.......... une région c'est un ensemble de rect ?
Et le 3ieme paramètre de TriggerRegisterEnterRegion ça correspond à quoi ?


Message édité par Maximaxou le 19-04-2007 à 12:00:01

---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589526
Maximaxou
rejoignez les fidèles du JASS
Posté le 19-04-2007 à 12:23:53  profilanswer
 

Voila :

Code :
  1. function Trig_lvl6_Monsters_disappear_Conditions takes nothing returns boolean
  2.    
  3.      return ( GetOwningPlayer( GetTriggerUnit() ) == Player(11) )
  4. endfunction
  5. function Trig_lvl6_Monsters_disappear_Actions takes nothing returns nothing
  6.     call RemoveUnit( GetTriggerUnit() )
  7. endfunction
  8. //===========================================================================
  9. function InitTrig_lvl6_Monsters_disappear takes nothing returns nothing
  10.     local region disappear_reg = CreateRegion()
  11.     call RegionAddRect( disappear_reg, gg_rct_lvl6_monster_disappear_left  )
  12.     call RegionAddRect( disappear_reg, gg_rct_lvl6_monster_disappear_right )
  13.     call RegionAddRect( disappear_reg, gg_rct_lvl6_monster_disappear_down  )
  14.     call RegionAddRect( disappear_reg, gg_rct_lvl7_monster_remove_reg )
  15.     set gg_trg_lvl6_Monsters_disappear = CreateTrigger()
  16.     call TriggerAddCondition( gg_trg_lvl6_Monsters_disappear, Condition( function Trig_lvl6_Monsters_disappear_Conditions ) )
  17.     call TriggerAddAction( gg_trg_lvl6_Monsters_disappear, function Trig_lvl6_Monsters_disappear_Actions )
  18.     call TriggerRegisterEnterRegion( gg_trg_lvl6_Monsters_disappear, disappear_reg, null )
  19. endfunction


Mais ça leak toujours autant :/.


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4589533
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 19-04-2007 à 18:31:54  profilanswer
 

Je m'en doutais c'est juste à l'enregistrement de l'event mais je vois toujours pas d'autres leak alors ...
Poste ta question sur wc3campaigns.net


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589602
Sogara
What else ?
Posté le 21-04-2007 à 14:00:43  profilanswer
 

Est-ce que quelqu'un aurait l'amabilité d'expliquer à un noob, entre paraenthèses moi (je préfère le préciser), ce qu'est le spawn et le leak SVP ?


---------------
"Prouver que j'ai raison reviendrait à accorder que je puisse avoir tort."
n°4589616
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 21-04-2007 à 14:08:12  profilanswer
 

le spawn c'est la création d'unités sur la map, le leak ce sont des fuite de memoire, de la memoire non liberee qui n'a plus d'utilité


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589624
Sogara
What else ?
Posté le 21-04-2007 à 14:18:18  profilanswer
 

O^k je passerai moins pour un con maintenant. Ô merci mon Dieu, alias troll-brain, pour bien avoir voulu augmenter mon intelligence aujourd'hui !!


---------------
"Prouver que j'ai raison reviendrait à accorder que je puisse avoir tort."
n°4589626
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 21-04-2007 à 14:20:18  profilanswer
 

nan même pas j'ai juste augmenter ton savoir, mais c'est vrai qu'en société l'apparence est trés importante, souvent plus que le fond >.<


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4589763
Maximaxou
rejoignez les fidèles du JASS
Posté le 24-04-2007 à 05:37:34  profilanswer
 

Bon bin apparemment mon trigger est parfait :/. Le leak viendrait uniquement des unités qui, lors de leur suppression, ne seraient pas supprimées totalement. -.-


---------------
Dota c'est bien, le slide c'est encore mieux !

Aller à :
Ajouter une réponse