KO3bMA
offline
Опыт:
45,624Активность: |
Вопросы про утечки и вообще...
имеем простую функцию, там нет цикла , но к ней периодически во время игры обращаются:
вопрос 1 созданная точка имеет кроме координат еще какие то параметры в памяти, которые нужно уничтожать(polar)?
вопрос 2 в связи с вышесказанным уничтожается ли эта точка в памяти полностью с помощью call RemoveLocation (Offset)? вопрос 3 нужно ли при этом обнулять offset?, если точка удалена из памяти вопрос 4 , теоритический, чем лучше в плане утечек-тормозов, если я создаю юнита (Гг) и потом использую его, перед тем, что юнит с самого начала присутствует на карте, ведь он будет всю игру и с его смертью игра закончится? Пожелания: напишите плз статью, более расширенную, но с конкретными примерами, про утечки, причем примеры как можно проще, даже с простыми триггерами, и вставками на джасс для оптимизации, пока такой статьи нет (прочитал статью Сергея, все ясно и понятно), потом Адольфа, и все сразу непонятно))) Отредактировано ShadoW DaemoN, 08.08.2009 в 10:42. |
05.08.2009, 17:09 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ranger21
I love beatiul days XD
offline
Опыт:
13,274Активность: |
Я сейчас заплачу, какие ужасы =((
Если ты пишешь на Jass'e, то используй Real X,Y, а PolarProjection раскрывай на две Real'ки. Ну и про TSA молчу.
Таймеру нужны. |
05.08.2009, 17:13 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KO3bMA
offline
Опыт:
45,624Активность: |
Ranger21, не надо плакать, надо ответить на вопрос , кстати, я не пишу на джасс
KO3bMA добавил:
, а как заменить ето GetUnitFacing(udg_hero)?, это же все равно полярные координаты? |
05.08.2009, 17:33 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FREEZE_ball
Cataclysm => жара
offline
Опыт:
15,247Активность: |
KO3bMA, GetUnitFacing(udg_hero) возвращает не location, а real.
|
05.08.2009, 17:41 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KO3bMA
offline
Опыт:
45,624Активность: |
FREEZE_ball, я как бы вопросы задал, чтобы понять, имеет ли смысл делать что- то еще, кроме удаления утечек памяти, если к функции за игру обратятся не больше десятка раз, так просто, перегнал в джасс и добавил локалку, а иначе-огород городить и при етом джасс усиленно учить) |
05.08.2009, 17:51 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Линкольн
Barg Ent.
offline
Опыт:
4,812Активность: |
Цитата:
Нет не имеет. Хотя это только для данного случая. Хотя я бы советовал использовать вместо локаций координаты. Код:
И двигать б/е соответственно. Код:
Отредактировано Линкольн, 05.08.2009 в 18:49. |
|
05.08.2009, 18:43 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KO3bMA
offline
Опыт:
45,624Активность: |
Линкольн, спасибо) ЗЫ, тему прошу не закрывать пока, вдруг еще глупые вопросы появятся) |
05.08.2009, 18:48 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
CHAOSITO
offline
Опыт:
35Активность: |
Почитал про утечки и про функцию полярки, что мол она создает утечки, для проверки замутил 2 триггера на ГУИ:
----------------------------------------------Триггер 1ый вызывающий-----------------------------------------
CallMB События Игрок - Игрок 1 (Красный) types a chat message containing mb as Точное совпадение Условия Действия For each (Integer A) from 1 to 100, do (Actions) Цикл - Действия Триггер - Run MagicBones <gen> (ignoring conditions) ----------------------------------------------Триггер 2ой исполняющий----------------------------------------
MagicBones События Условия Действия For each (Integer A) from 1 to 360, do (Actions) Цикл - Действия Спецэффект - Create a special effect at ((Position of Чародей крови 0000 <gen>) offset by 1000.00 towards (Real((Integer A))) degrees) using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl Set MagicBone[(Integer A)] = (Last created special effect) For each (Integer A) from 1 to 360, do (Actions) Цикл - Действия Спецэффект - Destroy MagicBone[(Integer A)] ------------------------------------------------------------------------------------------------------------------- Итак, писал "mb" раз 30, итого триггер Magic Bones запустился 30*100=3000 раз, а функция полярки запустилась 360*3000=1080000 раз, и после завершения небыло никаких тормозов: Вопросы & Выводы:
|
06.08.2009, 21:14 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
CHAOSITO, создай периодический триггер с периодом в 0.01 и юзай полярки, думаю минут через 5-10 (зависит от конфигурации компьютера =)) комп залагает.
Полярки можно юзать, но не саму функцию, их надо юзать ввиде координат, то есть:
ты плахой... не удаляй мои мессаги =О Отредактировано Toadcop, 07.08.2009 в 00:28. |
06.08.2009, 22:57 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
CHAOSITO
offline
Опыт:
35Активность: |
Как я теперь понимаю исправить утечку при использования BJ полярок невозможно, т.к. создается локация которая неуничтожается. а исправить не получиться не близзардам т.к. они не знают когда, где и в каком месте нам нужно уничтожить локацию, не нам (картостроителям) т.к. мы не имеем ее указателя.... Я правильно понимаю? Ну вот решил протестить как ты и сказал, содержимое триггеры было таким:
----------------------------------------------------------------------------------------------------------------------- EveryTrigger События Время- Every 0.01 seconds of game time Условия Действия For each (Integer A) from 1 to 4, do (Actions) Цикл - Действия Боевая единица - Create 1 Пехотинец for Игрок 1 (Красный) at ((Position of Смотрящая в Ночь 0000 <gen>) offset by 256.00 towards (90.00 x (Real((Integer A)))) degrees) facing (Position of Смотрящая в Ночь 0000 <gen>) Set uuu[(Integer A)] = (Last created unit) For each (Integer A) from 1 to 4, do (Actions) Цикл - Действия Боевая единица - Remove uuu[(Integer A)] from the game ----------------------------------------------------------------------------------------------------------------------- Игра совершенно не тормозила.... Но оставил я игру не на 5 минут, и не на 10, а точнее свалил на улицу... По приходу естественно вар был полностью мертв, а при сворачивании меня ждало сообщение от вара с ошибкой "Недостаточно памяти для обработки команды" и сообщение от винды с предупреждением "Недостаточно виртуальной памяти". Виртуальной как и физической памяти у меня по гектару, итого 1024+1024=2 Гб, и эти 2 Гб забила функция с поляркой??? Hellfilm, спасибо за ответ на предыдущий пост....) Отредактировано CHAOSITO, 07.08.2009 в 19:45. |
07.08.2009, 17:33 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FREEZE_ball
Cataclysm => жара
offline
Опыт:
15,247Активность: |
Цитата:
Можно подредактировать файлик с BJ функциями. Но это в стопицот раз сложнее, чем написать новую функцию. |
|
08.08.2009, 05:47 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
FREEZE_ball:
Но зато будет легче в будущем без утечек :) |
08.08.2009, 13:27 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|