XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Локалки vs глобалки
Возможно вопрос идиотский, но все же: если мне нужна мультиприменяемость заклинания, то что лучше - создавать набор локальных данных для каждого нового запуска, или юзать глобальные массивы данных? В первом случае иногда придеться юзать рб, во втором случае надо будет следить за индексами. Впринципе, я юзал раньше локалки+рб, но гдето видел что уже и на локалки гонят, хочется уточнить раз и навсегда.
Старый 12.11.2008, 22:34
RazArt

offline
Опыт: 11,197
Активность:
Ну как вариант можно использовать глобалку массив, но лично мну кажеться лучше локалки, да и если спелл в несколько тригеров!, то будет проблематично узнать в массиве кто применил спелл
Старый 12.11.2008, 22:37
agentex

offline
Опыт: 34,834
Активность:
логичнее назвать тему так: глобальные масивы вс кеш
мультиприменимость достигается кеш+рб. локалки\глобалки тут не причем
Старый 12.11.2008, 22:47
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Смотря для чего.
Если надо в границах одной функции,то можно обойтись локалками или глобалками
Если данные нужны не только одной функции ,то мона рб+кеш или глобальные массивы,т.к локалки действуют в рамках одной функции
Старый 12.11.2008, 22:49
Scorched

offline
Опыт: 7,912
Активность:
Если ты имеешь в виду кеш, то он естественно медленный, а сам рб тут ни при чем.
Цитата:
на локалки гонят

=/
Старый 12.11.2008, 22:53
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Цитата:
мультиприменимость достигается кеш+рб. локалки\глобалки тут не причем


глобальними массивами тоже можно добиться мультиприменимости(хоть глобальные массивы менее удобные,чем кеш,но зато скорость извлекания данных гораздо выше,чем у кеша)
Старый 12.11.2008, 22:55
ScorpioT1000
Работаем
offline
Опыт: отключен
нужно юзать локалки где надо, глобалки где надо и не нужно юзать кэш в заклинаниях
Старый 12.11.2008, 23:01
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Цитата:
Сообщение от agentex
мультиприменимость достигается кеш+рб. локалки\глобалки тут не причем

Ммм... чем тебе глобальные массивы не угодили? Т.е. я не утверждаю что они оптимальный путь к мультиприменимости, я спрашиваю это. Если при каждом новом касте вносить данные в массив, то получим ту самую мультиприменимость)
Если в триггере внести в глобальный массив данные, то можно вызывать функцию передавая ей в качестве аргументов номера нужных элементов массива.
При помощи кеш+рб можно например привязать нужные значения при помощи SetValue к триггеру и из функции получить их же с GetTriggeringTrigger.
Цитата:
Сообщение от Dragon Knight
Если надо в границах одной функции,то можно обойтись локалками или глобалками

Это и есть один из аспектов вопроса - что именно юзать)

Xenosapien добавил:
Цитата:
Сообщение от ScorpioT1000
нужно юзать локалки где надо, глобалки где надо и не нужно юзать кэш в заклинаниях

Ответ года...
Старый 12.11.2008, 23:04
agentex

offline
Опыт: 34,834
Активность:
Цитата:
и не нужно юзать кэш в заклинаниях

не тру. нет научных свидительств что он чегото там запарывает
Старый 12.11.2008, 23:08
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
По идее, локалки не есть хорошо, т.к. переменная = определенный тип, и каждый раз создавая и удаляя в триггере набор локалок столько же раз вызываются конструкторы и деструкторы, хотя я хз как оно с простыми типами вроде риал/инт, но вроде у всех типов есть один базовый.
Старый 12.11.2008, 23:11
J
expert
offline
Опыт: 48,447
Активность:
Xenosapien делай как тебе удобнее...
Старый 12.11.2008, 23:14
Scorched

offline
Опыт: 7,912
Активность:
Цитата:
при каждом новом касте вносить данные в массив

смысл? локалки все же удобнее и быстрее, чем такой стек
Цитата:
создавая и удаляя в триггере набор локалок столько же раз вызываются конструкторы и деструкторы

на примере юнита. конструктор вызывается, когда юнит создается на карте, деструктор - когда ремувится. а при копировании в локалку копируется только хендл на него - число, которое можно посмотреть через рб
Старый 12.11.2008, 23:52
ScorpioT1000
Работаем
offline
Опыт: отключен
Цитата:
простыми типами вроде риал/инт, но вроде у всех типов есть один базовый

они по сути все одинаковые

ScorpioT1000 добавил:
Цитата:
не тру. нет научных свидительств что он чегото там запарывает

http://xgm.guru/forum/showthread.php?t=15202
Старый 13.11.2008, 01:47
I.Todd

offline
Опыт: 12,046
Активность:
мне все таки кажется, что имея опыт программирования на Jass не более полугода, спорить с людьми, которые с jassщм знакомы несколько лет, все таки несколько глуповато.
Xenosapien, обрати внимания на посты Джона и Скорпио. Да и в дальнейшем такие вопросы в другом разделе больше смысла задавать.
Старый 13.11.2008, 10:00
agentex

offline
Опыт: 34,834
Активность:

да, про неудаление строк то я не знал
остальные пункты там не несут в себе никакого зла, ведь юнит удаляется движком не сразу после смерти

agentex добавил:
ну + можно поставить проверку на бафф, если вдруг создастся юнит на таком же адресе
Старый 13.11.2008, 10:52
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
По идее, локалки не есть хорошо, т.к. переменная = определенный тип, и каждый раз создавая и удаляя в триггере набор локалок столько же раз вызываются конструкторы и деструкторы, хотя я хз как оно с простыми типами вроде риал/инт, но вроде у всех типов есть один базовый.

ооп ест моск) все переменные в жас - тип dword и с этим ничего не сделать) тем более вы выделяете место только под этот дворд) обращение к локалкам самое быстро, но идет немного времени на выделение

главное не использовать связку локалки+ТриггерСлипАкшин и не записывать в кешь инт значения хендлов
Старый 13.11.2008, 14:37
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
тем более вы выделяете место только под этот дворд) обращение к локалкам самое быстро, но идет немного времени на выделение
тру, а все остальное какието непонятные букафки...

Отредактировано Jon, 13.11.2008 в 15:32.
Старый 13.11.2008, 15:15
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
все переменные в жас - тип dword
дезинформация - они имеют тип long, что существенно
dword - это вообще мера длинны, используется в качестве обозначения беззнакового типа аналогичной длинны
Старый 13.11.2008, 15:25
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
В любом случае локалки удобнее, а разница в производительности не такая большая. Тем более глобалки медленне чем локалки.

PlayerDark добавил:
jass вобще сам по себе тормоз :)
Старый 13.11.2008, 15:27
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
Тем более глобалки медленне чем локалки
кто сказал такую глупость?

NETRAT добавил:
глобалки могут быть медленнее только в компилируемых языках где имеет значение является ли указатель far или near, и то разница в пару тактов
Старый 13.11.2008, 15:31
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 04:28.