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

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

Закрытая тема
 
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Экономия памяти
Добрый день всем.
И снова мои не очень умные вопросы однако знать ответы на них мне будет полезно.
При создании заклинаний я по узкому спектру знаний использую таймеры.
Обычно делаю так
void B() {
timer t = GetExpiredTimer()
....
DestroyTimer(t)
t=null }

void A() {
timer t = CreateTimer()
TimerStart(t..., function B)
t=null }
И так при каждом касте, будет ли экономнее сохранить таймер на юните применяющем и по окончанию паузить, а в нужное время опять стартовать?
Ну вот к примеру:
{ timer t = null
unit u = GetTriggerUnit()
if HaveSavedHandle(H,Id(u),0) then
t = LoadTimerHandle(H,Id(u),0)
TimerStart(t,....)
else
t = CreateTimer()
TimerStart(t,....)
SaveTimerHandle(H,Id(u),0,t)
endif
t=null ; u=null }
Стеб не нужен, насмешки прошу оставить во флудильне.

Отредактировано AlexKARASb, 19.06.2010 в 13:43.
Старый 19.06.2010, 13:17
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
если создание таймеров не вызывает лагов, то на остальное забей, это лишние действия.
Старый 19.06.2010, 13:23
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Артте, сам таймер нет, просто для своих спелов использую много эффектов, слабые машины не выдерживают вот ищу варианты экономии памяти, не уменьшая число эффектов
Старый 19.06.2010, 13:25
XOR

offline
Опыт: 38,159
Активность:
AlexKARASb:
cast:
timer t= CreateTimer()
TimerStart
endcast
DestroyTimer(t)
И так при каждом касте, будет ли экономнее сохранить таймер на юните применяющем и по окончанию паузить, а в нужное время опять стартовать?
Ты вообще не понятно объяснил, зачем так делать?)
Ну вот к примеру:
{ timer t = null
unit u = GetTriggerUnit()
if HaveSavedHandle(H,Id(u),0) then
t = LoadTimerHandle(H,Id(u),0)
TimerStart(t,....)
else
t = CreateTimer()
TimerStart(t,....)
SaveTimerHandle(H,Id(u),0,t)
endif
t=null ; u=null }
вы страшно привыкли к хэшу. В запускаемой функции вообще можно получить через GetExpiredTimer()
Можно сделать массив..
Старый 19.06.2010, 13:34
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
XimikS,
не понятно объяснил
void B() {
timer t = GetExpiredTimer()
....
DestroyTimer(t)
t=null }

void A() {
timer t = CreateTimer()
TimerStart(t..., function B)
t=null }
вот что я имел в виду, то-есть таймер создал, использовал, удалил
А ниже я предложил, если не удалять, а после использовать сохранив на кастере будет ли экономия?
Старый 19.06.2010, 13:41
StoneHeartis
Kicked by ScorpioT1002
offline
Опыт: 1,009
Активность:
AlexKARASb, юзай тогда онли структуры - в 3 раза быстрее+совместимость со всеми ппатчами. Мне когда-то alexkill скидывал пример. Там всё понятно.
Насчет паузы - да. Ведь именно так и делается в структурах с одним глобал таймером.(насколько я понял)
Прикрепленные файлы
Тип файла: w3x alexkill's sample.w3x (18.0 Кбайт, 14 просмотров )
Старый 19.06.2010, 14:00
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
StoneHeartis, за пример спасибо но я немного не это имел в виду
блин неужели я так плохо выражаю свои мысли?
Я пытаюсь с экономить память, не увеличить скорость, именно с экономить память
Таймер выбран мной для примера, чтобы понять, сократит или нет.
Ну вот к примеру Enein когда в одной теме мне объяснял фильтры, сказал что лучше сохдавать глобалку boolexpr, присвоить ей значение 1 раз, и использовать где надо. То-есть экономия.
Группы в энумах тоже в глобалки поместил и создаю только 1 раз.
Вот теперь ищу похожий способ, для остальных частей триггера.
Надеюсь понятно выразился >.< пойду читать, дабы научиться выражать свои мысли четче
Старый 19.06.2010, 14:11
StoneHeartis
Kicked by ScorpioT1002
offline
Опыт: 1,009
Активность:
AlexKARASb, я только одно не понял. Ну сохранишь ты его. А в памяти, то он останется. Смысл?
Старый 19.06.2010, 14:15
XOR

offline
Опыт: 38,159
Активность:
AlexKARASb:
блин неужели я так плохо выражаю свои мысли?
Я пытаюсь с экономить память, не увеличить скорость, именно с экономить память
А вам в голову не приходило что это взаимосвязанно?)
Старый 19.06.2010, 14:17
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Ладно не буду упрямиться попробую на методах.
Старый 19.06.2010, 14:24
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
Цитата:
Сообщение от StoneHeartis
юзай тогда онли структуры - в 3 раза быстрее+совместимость со всеми ппатчами


Структуры никоим образом не обеспечивают совместимости с чем-либо, а скорее даже наоборот - всегда нужен vJass для редактирования. К тому же, методы оборачиваются кучей ненужных функций действий, а аллокация нового элемента - вообще отдельная песня...
Старый 19.06.2010, 15:34
Закрытая тема

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

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

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

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



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