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

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

Ответ
 
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Провел несколько бенчмарков (100 тестов по 1000 вызовов):
globals
  trigger trig = CreateTrigger()
endglobals

function TrigC takes nothing returns boolean
  return true
endfunction

function TrigA takes nothing returns nothing

endfunction

// . . .
  call TriggerAddAction(trig, function TrigA)
  call TriggerAddCondition(trig, Condition(function TrigC))
// . . .
Тип вызоваMinimalMaximalAverage
call TrigC()1,5561,6541,617
call TrigA()1,4251,4831,476
----
TriggerEvaluate(trig)5,5245,6645,634
TriggerExecute(trig)7,5728,3997,839
----
ExecuteFunc("TrigC")8,1929,1678,417
ExecuteFunc("TrigA")8,0909,0718,322

Отредактировано ShadoW DaemoN, 31.08.2009 в 16:58.
Старый 31.08.2009, 16:51
agentex

offline
Опыт: 34,834
Активность:
ShadoW DaemoN, спс за тест а первый тип вызова - call?

// of course
Старый 31.08.2009, 16:56
adic3x

offline
Опыт: 108,439
Активность:
TriggerEvaluate просто вызывает условие и возвращает результат, а мне нужно чтоб срабатывал экшн
почему не делать все нужное в условии
задротство скоростей
да мы просто так, болтаем, зачем это надо - хз
Старый 31.08.2009, 19:13
agentex

offline
Опыт: 34,834
Активность:
рофл в условии не все возможно делать
почему не делать все нужное в условии
кому же верить?)
Старый 31.08.2009, 19:28
adic3x

offline
Опыт: 108,439
Активность:
вам нужен sleep? где вы его используете?
Старый 31.08.2009, 19:39
agentex

offline
Опыт: 34,834
Активность:
неа мне он никаким местом не сдался, но фраза
в условии не все возможно делать
несколько напрягает
Старый 31.08.2009, 19:44
ZeToX2007

offline
Опыт: 7,009
Активность:
О ) я знал что TriggerEvaluate быстрей) только не представляю, зачем автору создавать что либо в новом потоке О_о просто интересно )

Цитата:
Сообщение от ADOLF
sleep


О_о Интересно TriggerSleepAction это, что то на подобии void delay() ?-_-
Старый 31.08.2009, 20:34
agentex

offline
Опыт: 34,834
Активность:
ZeToX2007, TriggerEvaluate создает новый поток? о_О или ты о CreateTrigger? если чо - у меня статические тригеры, я их просто запускаю когда надо
Старый 31.08.2009, 20:38
ZeToX2007

offline
Опыт: 7,009
Активность:
Цитата:
Сообщение от agentex
TriggerEvaluate

Божи упаси О_о каким образом ? он просто возвращает boolean.

Цитата:
Сообщение от agentex
если чо - у меня статические тригеры, я их просто запускаю когда надо


Э как я понял, у тебя есть какой то integer, если он к примеру равен 4, то запускается 4 триггер из масива ?
Старый 31.08.2009, 21:01
agentex

offline
Опыт: 34,834
Активность:
О_О как ни странно ты почти правильно понял
только не представляю, зачем автору создавать что либо в новом потоке
а это кто сказал o_о
Старый 31.08.2009, 21:07
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
ZeToX2007:
Божи упаси О_о каким образом ? он просто возвращает boolean.
Он выполняет условие.
Старый 31.08.2009, 21:09
ZeToX2007

offline
Опыт: 7,009
Активность:
я про ExecuteFunc и TriggerExecute имел ввиду.

А не лучше будет так О_о:
1 способ.

if i == 1 then
call Fun1()
if i == 2 then
call Fun2()
if i == 3 then
call fun3()
и тд...как в ХаТ, хотя чем больше тем соотвественно проигриваем в скорости, можно офомрить в ввиде функции и возвращать и ставить ретурны О_о.

а

boolean b1
boolean b2


if b1 then
if b2 then
call Fun1()
else
call Fun2()
endif
else
if b2 then
call Fun3()
else
call Fun4()
endif
endif

Ну и тд. хотя это юзал 1 раз О_о и оказалось быстрей чем if i == 1 then и тд. но и функций было гдето 60...

ZeToX2007 добавил:
Цитата:
Сообщение от Hellfim
Он выполняет условие.

И возвращает boolean или что то не так ? О_о
Старый 31.08.2009, 21:25
agentex

offline
Опыт: 34,834
Активность:
не это стремно получится, у меня таких каллов штук 100 может быть o_O
хотя с точки зрения быстродействия наверно так и будет лучше О_о
И возвращает boolean или что то не так ? О_о
выполняет условие и возвращает булин чо не так О_О
Старый 31.08.2009, 21:26
ZeToX2007

offline
Опыт: 7,009
Активность:
Код:
library testing initializer INIT

globals
    trigger trig = CreateTrigger()
    trigger trig2 = CreateTrigger()
    integer hzfkd = 0
endglobals

function STOP takes nothing returns nothing
  integer hzfkd  = hzfkd 
endfunction
function LOL takes nothing returns boolean
    call DisplayTextToForce( GetPlayersAll(), "Запустился!" )
    call STOP()
    call DisplayTextToForce( GetPlayersAll(), "Не прервался!" )
    return false
endfunction

function HZ takes nothing returns boolean
call STOP()
return false
endfunction

function test takes nothing returns nothing
    local integer i = 0
    call TriggerEvaluate(trig)
    call DisplayTextToForce( GetPlayersAll(), "Работает")
    call HZ()
    call DisplayTextToForce( GetPlayersAll(), "Работает?" )
endfunction

function INIT takes nothing returns nothing
    call TriggerAddAction(trig,function LOL)
    call TriggerAddCondition(trig,Condition(function LOL))

    
    call TriggerRegisterPlayerEvent(trig2, Player(0) , EVENT_PLAYER_END_CINEMATIC)
    call TriggerAddAction( trig2,  function test )
endfunction

endlibrary


Вот вам задачка ) угадайте что должно высветится, а что нет) и почему..
Старый 31.08.2009, 21:33
agentex

offline
Опыт: 34,834
Активность:
во первых карта не скомпилируется О_о
ну весь вопрос в том убивает ли поток с ошибкой функция STOP O_o
а вообще как это относится к сабжу моно узнать? о_О
Старый 31.08.2009, 21:40
ZeToX2007

offline
Опыт: 7,009
Активность:
Цитата:
Сообщение от agentex
во первых карта не скомпилируется О_о

У меня скомпилировалось и запустилось, представь себе О_О

Цитата:
Сообщение от agentex
а вообще как это относится к сабжу моно узнать? о_О

то что TriggerEvaluate, возможно в новом потоке, но что она возвратить если этот поток прервать ? О_О
Старый 31.08.2009, 21:49
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
У тебя не скомпилируется код вообще, code не принимают и не возвращают аргументов.
Старый 31.08.2009, 22:23
agentex

offline
Опыт: 34,834
Активность:
но что она возвратить если этот поток прервать
как ни странно, меня абсолютно не волнует что она возвратит
У меня скомпилировалось и запустилось, представь себе О_О
call TriggerAddAction(trig,function LOL) эту строчку пропустило? О_о чудеса какие
Старый 31.08.2009, 22:26
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
+В Stop что объявлено? И на чем вообще написано ни на cJass ни на vJass это не похоже (библиотеку не считаем).

Hellfim добавил:
бтв должно все высветиться, но высветится только Работает и Запустился?
Старый 31.08.2009, 22:28
agentex

offline
Опыт: 34,834
Активность:
Bee, дело в том что от них фиг вразумительного ответа добьешься..
Hellfim, вроде бы это vJass
Старый 31.08.2009, 22:31
Ответ

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

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

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

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



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