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