Nekit1234007
offline
Опыт:
11,916Активность: |
[cJass] Триггерный телепорт, есть утечки или нет?
Делал триггерный channel телепорт с хэш таблицами. Возникла не очень ясная аномалия... При проверке спелла на утечки, кол-во хендлов, при нескольких кастах, начало прагать от начального до ста, >ста, <ста, до начального, опять до >ста... Вопрос: утечка есть или всётаки нет?
Отредактировано Nekit1234007, 27.10.2009 в 07:41. |
26.10.2009, 21:13 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sebra
offline
Опыт:
5,603Активность: |
Утечек не нашёл, но:
DestroyTrigger(t) вызываешь не в самом конце работы триггера - опусти как можно ниже.
И вообще обычно между остановкой триггера и его уничтожением выдерживается пауза. И ещё ConvertPlayerUnitEvent(273) вместо EVENT_PLAYER_UNIT_SPELL_CAST думаешь лучше?
Мне кажется заранее присвоенная константа лучше вновь преобразованного целого. Хотя это уже вопрос к Адольфу. Может в псевдокоде это быстрее. То, что фильтра на каст нет, это ты и сам думаю знаешь. |
26.10.2009, 22:03 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elf_Stratigo
offline
Опыт:
4,699Активность: |
1) чтото до меня не особо дошло, что тебе не понравилось в результате GetHandleId и ты опускаешь их вниз...
2) разумеется константы лучше использовать 3) перед уничтожения триггера вроде чистят его действия и условия (а может даже его нужно убрать из очереди оО) ну и так... 4) в блоке define в каждую строчку вроде надо вписать private 5) лично я когда работаю с хеш таблицами, то для каждой записи делаю такую строчку: private constant int MySpecialHandle=StringHash("MySpecialHandle") но это дело привычки... |
27.10.2009, 08:35 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Arty3ooo
...
offline
Опыт:
3,125Активность: |
Sebra, call DestroyTrigger(t) ... пауза перед уничтожением... это сказки. EVENT_PLAYER_UNIT_SPELL_CAST=ConvertPlayerUnitEvent(273) отсюда вывод что быстрее. |
27.10.2009, 08:43 | #4
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
вызов медленне обращения к переменной |
27.10.2009, 11:40 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NCrashed
offline
Опыт:
13,553Активность: |
Хендлы могут прыгать, главное, чтобы они после возвращались к первоначальному значению.
NCrashed добавил: Утечек не нашел, но есть одно но... лучше делать пустые строчки между блоками комманд, что повысит читаемость в разы, создание переменных, например, отделить от самого спелла. |
27.10.2009, 12:01 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
Всем спасибо. Утечек нет, хорошо. Заменю конверты константами. Тему клоз можно.
|
27.10.2009, 13:41 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sebra
offline
Опыт:
5,603Активность: |
ADOLF:
Ты уверен, что ConvertPlayerUnitEvent(273) - вызов, а не указание типа значения? Взгляни, пожалуйста, в своё (или дарёное) волшебное зеркало. :) |
27.10.2009, 21:16 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
jy не показывает инит глобалок ну логично что идет вызов фции |
27.10.2009, 21:33 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sebra
offline
Опыт:
5,603Активность: |
ADOLF:
Не обязательно смотреть на это в глобалках, можно в функции. А вар сделан логично? Впрочем конверты описаны как нативки - 99% что идёт вызов функции. 1% на то, что при переводе в псевдокод это инлайнится. |
27.10.2009, 23:46 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
оно ничего не инлайнит - его задача как можно быстрее обработать код (напомню, что он обрабатыватеся при выборе карты) |
28.10.2009, 11:08 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sebra
offline
Опыт:
5,603Активность: |
По идее эти нативки (конверты) что берут, то и отдают. Только тип проверяется, да и то не во время работы. |
28.10.2009, 19:05 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
это код GetHandleID, что бы было понятнее что такое Blizzzzz =)
да, берет, да возращает, но как обычно через сами знаете какой проход |
28.10.2009, 21:55 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
Адик, т.е. рб был лучше? оО
|
28.10.2009, 22:04 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
он не был лушче, по сути это он и есть тут радует исполнение, хз как они его прикручивали (компилятор у них вроде нормальный, такого создавать не должен) ADOLF добавил:
если кому то интересно - то это ConvertPlayerUnitEvent под скальпелем ^^ |
28.10.2009, 22:46 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sebra
offline
Опыт:
5,603Активность: |
Спасибо. |
28.10.2009, 23:05 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|