Сейчас 15:10:53 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Удаление утечек
EvilPeonДата: Воскресенье, 17 Августа 2014, 17:05:55 | Сообщение # 1
1 уровень
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Блокировки:
Всем привет, я сделал способность с даммиком, который летит от героя и станит первого противника + наносит статы героя. Вот сбно 2 триггера, 1 запускает способность, а 2 на само движение. Я вроде удалил все точки и попытался избавиться от переменных, однако скачанная мной системка Hundle Сounter стабильно находит 100 утечек (если рядом с дамми почти сразу оказывается противник, то меньше). Помогите плиз уменьшить их кол-во на GUI :)

http://img.lostpic.net/orig_images/b/f/5/bf541223b5e537a3325205427e555071.jpg

http://img.lostpic.net/orig_images/0/3/c/03c75044dd28e5e9af0488937cc58988.jpg
 

FEARKILLERДата: Воскресенье, 17 Августа 2014, 21:02:14 | Сообщение # 2
6 уровень
Группа: Проверенные
Сообщений: 175
Награды: 0
Репутация: 149
Блокировки:
Цитата EvilPeon ()
Всем привет, я сделал способность с даммиком, который летит от героя и станит первого противника + наносит статы героя. Вот сбно 2 триггера, 1 запускает способность, а 2 на само движение. Я вроде удалил все точки и попытался избавиться от переменных, однако скачанная мной системка Hundle Сounter стабильно находит 100 утечек (если рядом с дамми почти сразу оказывается противник, то меньше). Помогите плиз уменьшить их кол-во на GUI

Чувак, если ты юзаешь GUI, то забудь про максимальную оптимизацию и полное устранение утечек. И тут дело не столько в твоих хорошо/плохо написанных триггерах(или кривых руках), а в БЖ функциях, на которых работает GUI, вот как раз эти БЖ функции сами по себе и утекают, потому что писал их какой-то криворукий баран.

У тебя есть 2 варианта:
1 - Ты продолжаешь юзать GUI, забив на всё и максимум что можешь сделать для устранения утечек, это удалять за собой точки, эффекты, группы, дамми-юнитов и прочий мусор, этого будет вполне достаточно для GUI. В обнулении глобалок, также нет нужны, они при следующем использовании перезапишутся.
2 - Ты переходишь на Jass и в чистом виде пишешь свой код, в этом случае уже, утечки будут зависеть только от твоих прямых рук.


Делаю из воды вино, хожу по воде...
 

EvilPeonДата: Понедельник, 18 Августа 2014, 13:15:57 | Сообщение # 3
1 уровень
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Блокировки:
FEARKILLER, как джасс-то учить неохота) Просто я читал, что все утечки от полярных координат, и надо по X и Y дамми двигать, но никак не догоню как. Мб существует такой способ с локалками и кастом скриптом?
 

BiboДата: Понедельник, 18 Августа 2014, 20:24:29 | Сообщение # 4
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата FEARKILLER ()
БЖ функции сами по себе и утекают, потому что писал их какой-то криворукий баран.

avtorklif
Цитата EvilPeon ()
что все утечки от полярных координат

Не только.
В GUI можно контролировать утечки, но это возможно только посредством CS вставок, иначе говоря, ты уже используешь Jass. Так от чего не отбросить сомнения и не прокачать мозги? Кто знает, быть может читать мысли научишься.
На картинках не узрел ничего смертельного. Могу пенять только на строчку set bj_wantDestroyGroup = true, где-то поднимался разговор, о бесполезности этой bj-переменной, то есть, лишняя группа после сего присвоения удалена не будет.
 

EvilPeonДата: Понедельник, 18 Августа 2014, 22:07:19 | Сообщение # 5
1 уровень
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Блокировки:
Цитата Bibo ()
Могу пенять только на строчку set bj_wantDestroyGroup = true, где-то поднимался разговор, о бесполезности этой bj-переменной, то есть, лишняя группа после сего присвоения удалена не будет.

Хм, добавил группу в переменную, очистил ее, удалил с помощью call DestroyGroup - результат тот же(100 утечек). Или и там и там не работает, или работает одинаково. :) Не согласен на счет set bj_wantDestroyGroup = true, т.к. видел такой cs скрипт в стандартной карте от Blizzard "Шоколадные войны", все группы чистились там именно таким способом. Кому как ни им лучше знать как оптимизировать свой косячный код)
 

Q1wAseДата: Вторник, 19 Августа 2014, 09:15:28 | Сообщение # 6
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
Не надо гнать на bj_wantDestroyGroup.
Он прекрасно работает для GUI'шнников, если им уметь правильно пользоваться.


 

BorodachДата: Вторник, 19 Августа 2014, 10:19:46 | Сообщение # 7
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Поиск групы создает 2 локальные переменные групы, а bj_wantdestroygroup очистит только одну.

Добавлено (19 Августа 2014, 10:19:46)
---------------------------------------------
Попробуй убрать поиск групы и проверить сколько утечек тогда.


Karamba
 

FEARKILLERДата: Вторник, 19 Августа 2014, 13:43:53 | Сообщение # 8
6 уровень
Группа: Проверенные
Сообщений: 175
Награды: 0
Репутация: 149
Блокировки:
Цитата Bibo ()
avtorklif

Потрясающе! Но можно пожалуйста поинформативнее ответ?


Делаю из воды вино, хожу по воде...
 

BorodachДата: Вторник, 19 Августа 2014, 14:33:32 | Сообщение # 9
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Поинформативнее, в том что ты не прав. Потому что бж функции не вызывают утечек (ну 1 или 2), они написаны для графического джасса, то есть ГУИ, чтоб новичкам было проще работать с триггерамм. А плохо это тем что простые действия в пару строк (джассом), в гуи будет вызваны дополнительные функции и конвертации (к примеру точки в координаты), в общем теряются дольки секунды на обработку триггера.

Karamba
 

FEARKILLERДата: Вторник, 19 Августа 2014, 16:03:15 | Сообщение # 10
6 уровень
Группа: Проверенные
Сообщений: 175
Награды: 0
Репутация: 149
Блокировки:
Цитата Borodach ()
Потому что бж функции не вызывают утечек (ну 1 или 2), они написаны для графического джасса, то есть ГУИ, чтоб новичкам было проще работать с триггерамм. А плохо это тем что простые действия в пару строк (джассом), в гуи будет вызваны дополнительные функции и конвертации (к примеру точки в координаты), в общем теряются дольки секунды на обработку триггера.

А как же локальные переменные не обнуляемые, их то не забыл упомянуть? Я в курсе для какой цели были написаны бж и не про это хотел услышать, а про то что они якобы не утечны и полностью безопасны. Но если так оно и есть, то почему я ни разу не видел чтобы гуишные бж функции даже самые простые(типо SelectUnitForPlayerSingle или PanCameraToTimedForPlayer) юзались джассерами, окромя мб функций которые используют внутри себя только real, integer, boolean типы переменных, например IMinBJ/IMaxBJ/RMinBJ/RMaxBJ/ModuloInteger/ModuloReal/IntegerTertiaryOp и прочие.

Цитата Borodach ()
в том что ты не прав.

Об этом вообще речи не было, я в грудь кулаком себя не стучал. Всего лишь хотел увидеть в ответ не просто смайл, а что-то более:
Цитата Borodach ()
Поинформативнее,


Делаю из воды вино, хожу по воде...
 

EvilPeonДата: Вторник, 19 Августа 2014, 20:21:40 | Сообщение # 11
1 уровень
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Блокировки:
Цитата Borodach ()
Попробуй убрать поиск групы и проверить сколько утечек тогда.

Убрал поиск, при первом касте создаются 4 утечки, потом утечек вобще нет. А ты не знаешь, как 2 группы при поиске обнулить? Буду очень благодарен :)
 

BorodachДата: Среда, 20 Августа 2014, 23:39:15 | Сообщение # 12
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Обнулить не получится, но можно добавить строку на джассе чтоб избавится от создания 2.
Создай 2 переменные, группа и точка.
В личном сценарии: call GroupEnumUnitsInRange(udg_название групы, GetLocationX(udg_название точки), GetLocationY(udg_название точки), нужный радиус, null)
После, выбирай в поиске группы переменную группы.


Karamba
 

BiboДата: Четверг, 21 Августа 2014, 16:45:45 | Сообщение # 13
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата Borodach ()
В личном сценарии: call GroupEnumUnitsInRange(udg_название групы, GetLocationX(udg_название точки), GetLocationY(udg_название точки), нужный радиус, null)

Для гуишника можно попроще.
call GroupEnumUnitsInRangeOfLoc(udg_Группа, udg_Точка, радиус, null)


Сообщение отредактировал Bibo - Четверг, 21 Августа 2014, 16:50:09
 

EvilPeonДата: Четверг, 21 Августа 2014, 18:40:54 | Сообщение # 14
1 уровень
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Блокировки:
Borodach, Bibo, спасибо Вам большое, Вы конечно все и так мне разжевали и в рот положили, но у меня при обоих способах даммик почему-то просто движется, отказываясь наносить урон и станить :(

Вот скрин (пробовал и с тем, и с другим скриптами)
http://savepic.org/5907408.png
 

BorodachДата: Четверг, 21 Августа 2014, 21:46:50 | Сообщение # 15
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
По моим догадкам, firebolt не может кастовать в движении, нужно создать другoго юнита и у него интелект равен 0, поэтому нет урона...

Добавлено (21 Августа 2014, 21:46:50)
---------------------------------------------
Также пользуйся 1 действием из предложеных мною и бибо. Какое тебе удобней


Karamba
 

EvilPeonДата: Пятница, 22 Августа 2014, 13:36:40 | Сообщение # 16
1 уровень
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Блокировки:
Borodach, с даммиком все норм оказалось, просто группа почему-то сразу удаляется. Убрал удаление группы - все заработало, счетчик тоже утечек не видит.
Мб не понимаю чего, но или счетчик тупит, или группа как-то перезаписывается.
А так все вроде норм работает, всем спасибо! Нафлужу 30 сообщений стану проверенным, поставлю + в репу
victory
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz