ZeToX2007
offline
Опыт:
7,009Активность: |
и опять же меня волнует скорость...
Допустим у нас имеется:
Код:
Когда мы создаём какого либо юнита мы добовляем его в масив, при смерти удаляем... И сам вопрос, что будет быстрее: 1.Использовать группа например выбрать каждого юнита в радиусе 600 от юнита и сделать действия. 2.Переберать каждого юнита в масиве и делать проверку на растояние. |
21.08.2009, 18:34 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Вероятно массив будет быстрее, потому что Пик выбирает всех юнитов из внутреннего массива юнитов по кондиции (???). |
21.08.2009, 18:38 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
правильнее по моему использовать группу тут, хотя зависит от количества юнитов в массив, которые будут проверяться |
21.08.2009, 18:51 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
Цитата:
меньше 300 ZeToX2007 добавил: Цитата:
А разве скорость не зависит от юнитов на карте ? сдесь получается, что создаётся новая группа, туда заносятся юниты, которые удолетворяют данному условию и потом совершаются действия... В массиве сразу, проверяет условие и если удолетворяет, совершает те или иные действия. или я в чем-то ошибаюсь ? |
||
21.08.2009, 19:11 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
независит |
21.08.2009, 19:12 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
ZeToX2007, группа может быть создана всего 1 раз при инициализации. В группу юнит не заносится, при пике сразу проверяется расстояние и производится действие. |
21.08.2009, 19:13 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
перебрать все и вся проверяя на условии, пройтись по циклу от 0 и до конца проверяя условие, и прочии нубо решения - это удел нубо кодеров, никто этим при разработке игр незанимается |
21.08.2009, 19:14 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
Цитата:
Бред Цитата:
А как к примеру, это реализовано с++ в варике ? допустим у тебя есть 3 масива. Массив Имен Массив Зарплат Массив Ещё хз чего Как по твоему по, имени найти зарплату =/ если же не перебором ? |
||
21.08.2009, 19:34 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
ZeToX2007
|
21.08.2009, 19:55 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
~Hellfim, потому что создаётся новая группа:
function GetUnitsInRectMatching takes rect r, boolexpr filter returns group local group g = CreateGroup() создание группы call GroupEnumUnitsInRect(g, r, filter) занесение в группу юнитов call DestroyBoolExpr(filter) return g endfunction а потом call ForGroup(whichGroup, callback) по этой группы выполняется действия. Цитата:
Ну) на vJass структура это несколько масивов) ну все же же ? Все базовые алгоритмы, которые изучаются в вузах основанны на переборах ! |
|
21.08.2009, 20:08 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
ZeToX2007, ВНЕЗАПНО
Hellfim добавил: Думаю что я бы искал по ид. |
21.08.2009, 20:15 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Ммм... а кто тогда обьяснит мне внутренне устройство функции GroupEnumUnitsIn.... ?
PlayerDark добавил: Hellfim, ты не понял основной идеи, как осуществляется пик всех юнитов ? |
21.08.2009, 20:17 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
Hellfim, так сразу и надо говорить, тут работает действия с одной группой, перебирая каждого юнита сопоставляет условия... в массивах почти тоже самое. Но в чем же проблема ? то что алгоритм скомпилированный на С++ быстрее чем какие либо алгоритмы на jass. вот и хотелось бы узнать на сколько быстрее...
|
21.08.2009, 20:29 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
PlayerDark, вместо GroupEnumUnitsInRect можно написать любую из этих функций
» функции
Мне кажется, что так делать логичнее, чем заносить в массив. |
21.08.2009, 20:29 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
конешно, какбудто они тебе будут обьеснять тебе такие вещи как граф сцены, сетка сцены, фристум кулинг, бинарное разбиение пространство, хеш таблицы, красно черные и подобные деревья |
21.08.2009, 20:30 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
Цитата:
А ещё хеш массивы как раз котороми можно: Цитата:
но в jass'e много чего нет полезного. Цитата:
На логику плевать, мне важней что быстрее.. и всего лишь |
|||
21.08.2009, 20:47 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
|
21.08.2009, 20:49 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZeToX2007
offline
Опыт:
7,009Активность: |
J, так вопрос заключался в скорости, а не в логике =/
|
21.08.2009, 21:02 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
ZeToX2007, он тебе дал самый быстрый вариант.
|
21.08.2009, 21:35 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
нам объясняли все на 1 курсе )) ScorpioT1000 добавил:
такчто фейл ScorpioT1000 добавил:
где ты нашел класс там? юнит? преобразовываем имя в персональный ключь и переходим на ячейку зарплаты ВНЕЗАПНО =O |
22.08.2009, 00:18 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|