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

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

Ответ
 
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Использование реальных структуры либо локалок
Добрый день всем.
У меня возник вопрос :
Выгоднее что использовать в таком плане(суть вопроса после *//*) при присвоеном юните в структуре
локалки real, или же создать заранее в структуре реальные и потом использовать
struct Data
unit
real x
real y
endstruct

{
timer t=GetExpTimer() // период оч маленьки к примеру 0.03
Data D=LoadInt
// D.x=GetUnitX(D.u)
// D.y=GetUnitY(D.u)
или же
// real x=GetUnitX(D.u)
// real y=GetUnitY(D.u)
}
Старый 07.05.2010, 22:10
Doc

offline
Опыт: 63,163
Активность:
Первое имхо.
Старый 07.05.2010, 22:15
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
DoctorGester, аргументируй плз
просто хочется узнать выгоднее лок в большом кол-ве или же присвоение к одной но много раз
Старый 07.05.2010, 22:41
Doc

offline
Опыт: 63,163
Активность:
Зачем присваивать много раз? Сделал то что в первом комментарии 1 раз а потом используешь. Преимущество в том что не требуется памяти для инициализации переменных.
Старый 07.05.2010, 22:45
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
не требуется памяти для инициализации переменных.
про новые ты не забыл? лок. пер. инициализации тоже требует, вот к чему клоню...
Старый 07.05.2010, 22:48
Doc

offline
Опыт: 63,163
Активность:
Не понимаю тебя. Структура это глобалки. А глобалки инициализируются 1 раз. Я вообще про память отводящуюся на объявление переменной.
Старый 07.05.2010, 22:53
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
смотри, на глобалки 1 раз отвелась память
а на локалки будет отводится каждый раз нужное кол-во памяти и позже удалятся
какой из вариантов выгоднее с точки зрения jass
собственно это пытаюсь спросить
Старый 07.05.2010, 22:59
Doc

offline
Опыт: 63,163
Активность:
Первый вариант же. Как я и говорил.
Старый 07.05.2010, 23:13
agentex

offline
Опыт: 34,834
Активность:
обращение к глобалке медленней, но не требуется инициализация. незнаю, я юзаю локалки в периодических функциях и все норм. (токо разумное количество естественно)
Старый 07.05.2010, 23:16
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
объявление локалки - это время на объявление. и если тебе актуалено время выполнения, то локалки не подходят
Старый 07.05.2010, 23:16
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
vsparker, актуально мне: память потраченная на то или иное
Старый 07.05.2010, 23:33
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
при нормальном использовании в обоих случаях никаких проблем с памятью быть не должно
Старый 07.05.2010, 23:35
agentex

offline
Опыт: 34,834
Активность:
о памяти не беспокойся, после завершения работы функции локалки удаляются из стека
ну с глобалками и так ясно
Старый 07.05.2010, 23:36
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
agentex, ясно
спасибо всем
можно закрыть тему
Старый 07.05.2010, 23:53
SRes
1110101000
offline
Опыт: 9,997
Активность:
По логике локалки должны быть не намного медленнее, а раз вы говорите, что обращение к глобалкам медленнее - значит и локалки работают быстрее, т.к. стек расширяется всего одной машинной командой, а значит что мы теряем чуть-чуть времени вначале, зато потом получаем профит каждый раз при вызове.
Это логика, утверждать ничего не буду, ибо никто (или все-таки кто-то?) не знает ТОЧНОЙ и единственно правильной структуры работы джасса. (Конечно, я имею ввиду софорумцев)
Старый 08.05.2010, 00:42
adic3x

offline
Опыт: 108,439
Активность:
объявление локалки - это время на объявление. и если тебе актуалено время выполнения, то локалки не подходят
ничтожно мало, позволяет его полностью игнорировать
ибо никто (или все-таки кто-то?) не знает ТОЧНОЙ и единственно правильной структуры работы джасса
знают крок и я (ну и вд немного видел) - ваша гипотеза совершенно верна.
Старый 08.05.2010, 00:51
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
SRes, ADOLF, хм ясно, тогда буду лок. пер-ми, а то в структурах еще не оч.
Старый 08.05.2010, 01:03
adic3x

offline
Опыт: 108,439
Активность:
структуры как средство хранения данных нужны когда вам надо ассоциировать большой кусок данных с индексом, т.е. например функция принимает не 16 аргументов, а 1 - указатель на структуру
и если говорить честно - то структуру надо создавать тоже т.е. это медленно
Старый 08.05.2010, 01:09
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
при периодическом передвижении юнита, если вдруг требуется проводить действия над группой в известных меняющихся координатах то я не создаю в функции при каждом ее вызове группу а создаю глобалку и называю ее tempG. потом когда надо например нанести урон группе в x\y то я заполняю группу войсками провожу неоходимые операции и вконце очищяю ее но не удаляю (!) мое мнение - так быстрее всего. так же лучше не локалить handle в функции а использовать только переменные которые не надо обнулять.
Старый 08.05.2010, 02:51
ZeToX2007

offline
Опыт: 7,009
Активность:
~bee, это ты к чему ?

~AlexKARASb, можно юзать и без структур

Код:
//globasl
//{
  real x_0x00 =0
  real y_0x00 =0
//}

void d()
{

   x_0x00 = GetUnitX(D.u)
   y_0x00 = GetUnitY(D.u)
// Без слипов и вейтов.. так-же выгодно, если обращение к глобалкам не очень частое.
}


// забудьте о глабалс - прим. адик

Отредактировано ADOLF, 11.05.2010 в 00:44.
Старый 09.05.2010, 03:45
Ответ

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

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

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

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



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