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