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

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

Закрытая тема
 
ZeToX2007

offline
Опыт: 7,009
Активность:
Что быстрей ?
Код:
native SetUnitState takes unit whichUnit, unitstate whichUnitState, real newVal returns nothing


Или

Код:
native  SetWidgetLife   takes widget whichWidget, real newLife returns nothing



и

Код:
native  GetWidgetLife   takes widget whichWidget returns real
constant native GetUnitState takes unit whichUnit, unitstate whichUnitState returns real


и ещё маленький вопросс... сколько всего можно записать информации в ХТ и стоит их создавать несколько ?
Старый 06.08.2009, 16:43
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
ZeToX2007, 1) Я думаю, что по скорости обе функции одинаковы.
  1. не знаю, думаю что это число достатчно велико. Несколько ХТ создать можно, наверное чем меньше в таблице значений, тем она быстрее работает.
Старый 06.08.2009, 16:55
ZeToX2007

offline
Опыт: 7,009
Активность:
Цитата:
Сообщение от PlayerDark
наверное чем меньше в таблице значений, тем она быстрее работает.


Не наверно, а точно, по крайной мере в других языках...
Старый 06.08.2009, 17:04
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Провел бенчмарк (100 тестов), получил следующие результаты:
Функция Мин. время Макс. время Среднее время
SetUnitState 2,86 2,98 2,93
SetWidgetLife 2,59 2,67 2,65
Функция Мин. время Макс. время Среднее время
GetUnitState 2,31 2,47 2,42
GetWidgetLife 2,12 2,19 2,17
Как видно из тестов, GetWidgetLife/SetWidgetLife быстрее аналогов. Это может объясняться тем, что они принимают меньше аргументов и, возможно, используют универсальный алгоритм для всех виджетов.
Старый 06.08.2009, 17:43
MupaMaX
Мой статус
offline
Опыт: 1,495
Активность:
ShadoW_DaemoN, Мне кажется это не из-за количества аргументов, поскольку у SetUnitState больше проверок, оно начинает проверять что ей необходимо менять и делает лишние запросы... сказать лишние - глупо... GetWidgetLife знает что ей необходимо делать, и выполняет линейный алгоритм...
А от количества принимающих аргументов ничего не должно завысить...
Старый 07.08.2009, 15:26
ScorpioT1000
Работаем
offline
Опыт: отключен
А от количества принимающих аргументов ничего не должно завысить...
как это ничего? а стек?)
Старый 07.08.2009, 15:45
MupaMaX
Мой статус
offline
Опыт: 1,495
Активность:
Hellfim, не в этом смысле, я то видел, и кстати там удалили моё сообщение, которое как раз показывает глупость выше сказанных сообщений о количестве аргументов...
Смысл выигрывать этих 001 ?
Старый 08.08.2009, 16:12
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
MupaMaX,
Смысл выигрывать этих 001 ?
Не буду отвечать на этот вопрос, он слишком сложный для меня. sarcasm
Cпециально для тебя провел тестирование следующих функций:
// #1
function test1 takes nothing returns nothing
  call DoNothing()
endfunction

// #2
function this_is_very_super_mega_long_function_name_for_test1 takes nothing returns nothing
  call DoNothing()
endfunction

// #3
function test2 takes integer a, integer b, integer c, integer d, integer e, integer f, integer g, integer h, integer i, integer j, integer k, integer l, integer m, integer n, integer o returns nothing
  call DoNothing()
endfunction

// #4
function this_is_very_super_mega_long_function_name_for_test2 takes integer a, integer b, integer c, integer d, integer e, integer f, integer g, integer h, integer i, integer j, integer k, integer l, integer m, integer n, integer o returns nothing
  call DoNothing()
endfunction
Функция Мин. время Макс. время Среднее время
#11,851,941,87
#22,082,202,13
#36,857,717,02
#47,097,577,25
Данное сообщение как раз показывает глупость твоего сообщения о количестве аргументов.
Старый 08.08.2009, 17:18
MupaMaX
Мой статус
offline
Опыт: 1,495
Активность:
ShadoW_DaemoN, знал что движок вара глупый, НО ЧТО БЫ НА СТОЛЬКО ?
Старый 08.08.2009, 17:27
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
MupaMaX, это не движок вара глупый. Вызов функции кидает в стэк все необходимое для ее работы. При завершении стэк освобождается. Так в каждом нормальном языке программирования. Можешь провести подобный тест на Си, Паскале, Ассемблере. Результаты будут теми же. Чем больше параметров, тем дольше вызов функции.
Старый 08.08.2009, 17:29
agentex

offline
Опыт: 34,834
Активность:
ShadoW DaemoN, а как ты тестишь функции на время выполнения? такты считаешь? О_о
Старый 08.08.2009, 17:38
MupaMaX
Мой статус
offline
Опыт: 1,495
Активность:
MF, Ну я ради интереса проделал подобное с ПХП, на вызов 100 функции с 3мя параметрами ушло 0.07... а с 20-тю 0.08... причем оно прыгало то там 0.07, то там 0.07, думаю вряд ли на моем проце можно правильно замерять... ПХП не компелируется( а транслируется ) может в этом проблема... будет желание попробую на C потестить
Старый 08.08.2009, 17:49
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
agentex, у меня Warcraft 1.21b + JAPI (с нативками StopWatch)
MupaMaX, был бы тут Адольф, он бы тебе "приятно" рассказал о том, что ты не очень хорошо разбираешься в программировании. Серьезно - я думаю, что по логике вещей это должно быть понятно, что чем больше аргументов нужно передать в функцию, тем больше будет количество переносов в рабочую область функции -> потребуется больше времени.
Закрыто из-за нецелесообразности дальнейшего разговора.
Старый 08.08.2009, 18:35
Закрытая тема

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

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

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

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



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