zer0ne
offline
Опыт:
11,119Активность: |
Перенос данных
» code Код:
Как мне переместить данные о юните из переменной st (function AAA) в переменную u (function BBB), что бы была мультиприменимость (ну или как назвать хз)? Я на Spell Contest 2 для этого пользовался XAT, но жюри сказало, что это слишком для одного спела. Кеш не предлагать. |
04.11.2008, 14:55 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,534Активность: |
ну вобщето именно кеш для этого и используется. как вариант - глобалка |
04.11.2008, 14:58 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zer0ne
offline
Опыт:
11,119Активность: |
Цитата:
agentex, с глобалкой не будет мультипременимости, там таймер на 1 секунду, если я за эту секунду функцию AAA вызову 5 раз |
|
04.11.2008, 15:00 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
Кеш имхо самое лучше для таких проблем, одна операция - это несмертельно... Но если тебя интересует именно сам способ как сделать это без кеша, то это зависит от действий в таймере... Раскажу на примере движения прожектила, если хочеш сделать без кеша то нужно создавать структуру прожектила, и как только создается экземпляр структуры помещать его в стек, как только удаляется, высвобождать стек от него Иметь глобальный таймер который каждые 0,04 сек проходится по всему стеку и обновляет все структуры, кеш ненужен потомучто все нужные данные уже содержатся в структурах, паузить таймер при размере стека равном нулю, при создании структуры если на даный момент стек пуст то включить таймер... |
04.11.2008, 15:06 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zer0ne
offline
Опыт:
11,119Активность: |
Jon, сложновато для меня, но попробую). А вообще я думал может можно сделать небольшую систему параллельных массивов
|
04.11.2008, 15:10 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
zer0ne дык, поралельными масивами надо делать в лбом случае, когда юзаеш или неюзаеш кеш, тогда будет всего одна операция с кешем - передача индекса
по поводу того способа что я сказал - он будет некорректно работать при больших периодах таймера, 1 сек это уже принцепи многовато... |
04.11.2008, 15:15 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Я когда-то давно юзал вот такую системку:
Код:
Функции GetInt и SetInt прекрасно инлайнятся JassHelper'ом, кстати. Для периодических действий я бы рекомендовал использовать не аттачи, а массив с индексами (что-то вроде стека) и пробегаться при каждой "работе" по стеку. |
04.11.2008, 15:30 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
черезчур не надежно, я бы не рекомендовал пользоватся в любом случае... |
04.11.2008, 15:49 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Цитата:
но это сказал тока НТ, впринципе оно так на так и выходит, мона ХАТ, мона коректно кешем но, если период таймера крайне мал мона одним таймером делать и вообще ничего не аттачить) (хотел было сказать позри мой код там это есть, но потом передумал) Цитата:
это надо смотреть уже "по месту", т.е. как создаются/удаляються хендлы, но согласен как вариант "универсального" аттача это не подходит у меня есть некоторые идеи по этому поводу, только хз будут ли они быстрее) |
||
04.11.2008, 16:26 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Jon, можно, конечно, использовать "бешенный массив" от векса:
Код:
но тогда пострадает производительность. Если серьезно, то мне такой системы хватало (при проверках индекс не переваливал даже за 1000). В случае чего можно пофиксить оффсет =). |
04.11.2008, 16:43 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zer0ne
offline
Опыт:
11,119Активность: |
ну я наверно воспользуюсь способом ShadoW DaemoNа, он короткий и понятный)
zer0ne добавил: Цитата:
ADOLF, может покажешь, просто интересно) |
|
04.11.2008, 17:40 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
нет, т.к. он - просто немного по другому офрмленный от свдн) |
04.11.2008, 17:42 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
zer0ne я надеюсь ты осознаеш что способом swdn (кторый кастрирование) тебе надо будет избавлятся от опсалютно любой утечки в периодических действиях?
|
04.11.2008, 18:17 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zer0ne
offline
Опыт:
11,119Активность: |
Jon, ну я может не понимаю, но у меня этот способ будет использоваться только между 2мя функциями и там все обнулено
|
04.11.2008, 18:21 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Цитата:
дык любая утечка в коде, который использцется неоднократно может привести к вертолету) |
|
04.11.2008, 18:32 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zer0ne
offline
Опыт:
11,119Активность: |
я сейчас тестю, ничего не вылетает |
04.11.2008, 18:33 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
zer0ne без утечку должно быть все периодические функции, если будет улпывать хоть одна точка каждые 0,04 сек, то через 5 минут все полетит...
|
04.11.2008, 18:34 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
ну скажем так, оно то и кешь и ХАТ тоже не безрезмерные, но они куда вместительнее одного массива, причем повязанного на хендлы |
04.11.2008, 18:37 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zer0ne
offline
Опыт:
11,119Активность: |
не думаю что у меня переполнится массив, там записывается только один юнит и он обнуляется и удаляется в конце |
04.11.2008, 18:44 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
ничего ты так и не понял)
когда будеш долговремено (5-10 минут) тестить карту в функции SetInt() выводи на экран I2S(H2I(h)-0x100000) |
04.11.2008, 18:49 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|