|
|
|
|
[Вопрос] Оптимизация
|
|
Faion | Дата: Вторник, 13 Сентября 2011, 21:11:56 | Сообщение # 26 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (FkoFF) что то кто-то палится.. учитывая что под функцию выделяется оперативная память. -_-
._. под функцию? лол? выделяются под данные функции ._. а поток, это инструкции ._.
Quote (FkoFF) а о рациональности, учитывая что на самом деле раскрывать просто не имеет смысла ибо это приведет лишь к более медленной загрузке карты.
._. кк, если вы так уперты, кого мне попросить подтвердить, что оберточные функции негативно сказываются на производительности,раз вы не верите? А вообще советую изучить мат часть. Во первых если функция не имеет инита, то не влияет никак, а если имеет, то наоборот негативно влияет на скорость прогрузки, я ж даже привел пример на уровне детского садика, или вы свято верите что кол-во строк влияет на скорость загрузки?
Quote (FkoFF) Так вот теперь вопрос - на кой хрен?
На тот же на кой юзают координаты вместо локаций, ставят точку в реальных значениях и используют бинарные операции.
Quote (FkoFF) он просто CnP из бж, собственно, функцию.
И это дает прибавку к производительности, хоть и не существенную, в пару тактов.
Неужели не очевидно что в случае с бж в потоке будет обертка+содержание, а если развернуть - только содержание?
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
[DUОS] | Дата: Вторник, 13 Сентября 2011, 21:19:34 | Сообщение # 27 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Кстати, вот то, что хотел автор: Code function Shunpo_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A000' endfunction
function Shunpo_Loop takes nothing returns nothing local timer t = GetExpiredTimer() local integer hid = GetHandleId(t) local unit UnitCaster = LoadUnitHandle(udg_Hash,hid,1) local real Angle = LoadReal(udg_Hash,hid,2) local real Speed = LoadReal(udg_Hash,hid,3) local real Root = LoadReal(udg_Hash,hid,4) local real Range = LoadReal(udg_Hash,hid,5) local real x1 = GetUnitX(UnitCaster) local real y1 = GetUnitY(UnitCaster) local real x3 = x1 + Speed * Cos(Angle) local real y3 = y1 + Speed * Sin(Angle) call SetUnitX(UnitCaster,x3) call SetUnitY(UnitCaster,y3) call SaveReal(udg_Hash,hid,5,Range+Speed) if Root <= Range then call FlushChildHashtable(udg_Hash,hid) call PauseTimer(t) call DestroyTimer(t) call PauseUnit(UnitCaster,false) call SetUnitVertexColor(UnitCaster,255,255,255,255) call SetUnitPathing(UnitCaster,true) endif set t = null set UnitCaster = null endfunction
function Shunpo_Actions takes nothing returns nothing local unit UnitCaster = GetTriggerUnit() local real x1 = GetUnitX(UnitCaster) local real y1 = GetUnitY(UnitCaster) local real x2 = GetSpellTargetX() local real y2 = GetSpellTargetY() local real Angle = Atan2(y2 - y1, x2 - x1) local real Speed = 30. local real Root = SquareRoot((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2)) local real Range = 0. local real Interval = .005 local timer t = CreateTimer() local integer hid = GetHandleId(t) call PauseUnit(UnitCaster,true) call SetUnitVertexColor(UnitCaster,25,25,25,75) call SetUnitPathing(UnitCaster,false) call SaveUnitHandle(udg_Hash,hid,1,UnitCaster) call SaveReal(udg_Hash,hid,2,Angle) call SaveReal(udg_Hash,hid,3,Speed) call SaveReal(udg_Hash,hid,4,Root) call SaveReal(udg_Hash,hid,5,Range) call TimerStart(t,Interval,true,function Shunpo_Loop) set t = null set UnitCaster = null endfunction
function InitTrig_Shunpo takes nothing returns nothing set gg_trg_Shunpo = CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_Shunpo,EVENT_PLAYER_UNIT_SPELL_EFFECT) call TriggerAddCondition(gg_trg_Shunpo,Condition(function Shunpo_Conditions)) call TriggerAddAction(gg_trg_Shunpo,function Shunpo_Actions) endfunction TriggerRegisterAnyUnitEventBJ желательно даже не разворачивать - от неё польза, а не тупые вызовы фунок.
|
|
|
|
Faion | Дата: Вторник, 13 Сентября 2011, 21:28:39 | Сообщение # 28 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (|DUОS|) TriggerRegisterAnyUnitEventBJ желательно даже не разворачивать - от неё польза, а не тупые вызовы фунок.
Вы реально не понимаете, что в итоге идет ссылка на тот код который мы можем развернуть? "Тупые вызовы функций" происходят как раз при использовании бж. Т.к. выполняется та же работа + ссылка. Я в шоке.Добавлено (13 Сентябрь 2011, 21:28:39) --------------------------------------------- wetalq, рекомендую изучить cJass, и в частности подробно изучить возможности препроцессора, в особенности дерективу #define, которая позволяет творить чудеса недоступные на jass2\vjass\zinc. В особенности первым делом советую написать библиотеку для эвентов, что бы события создавать в 1 строчку. Ну и ознакомится с callback функциями, позволяет сэкономить огромное кол-во времени на написание кода.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
[DUОS] | Дата: Вторник, 13 Сентября 2011, 22:48:13 | Сообщение # 29 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Faion) "Тупые вызовы функций" происходят как раз при использовании бж. Т.к. выполняется та же работа + ссылка. Я в шоке. Сергей Зверев Блондинко детектед? Когда функций парочка, влияние на производительность движка почти нулевое.
|
|
|
|
Faion | Дата: Вторник, 13 Сентября 2011, 23:54:48 | Сообщение # 30 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (|DUОS|) Когда функций парочка, влияние на производительность движка почти нулевое. Инфо, такой инфо. кк продолжайте дальше считать что бж благотворно влияет на производительность. Бтв, не забывайте все функции выносить в функции обертки.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
sumert | Дата: Среда, 14 Сентября 2011, 05:09:03 | Сообщение # 31 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Вы тут еще подеритесь. Достали уже сратся все трое. В личке друг другу пишите, а не устраивайте дебаты с, как вам кажется, интеллигентными оскорблениями друг друга.
|
|
|
|
wetalq | Дата: Среда, 14 Сентября 2011, 10:43:08 | Сообщение # 32 |
8 уровень
Группа: Проверенные
Сообщений: 550
Награды: 0
Репутация: 117
Блокировки:
| Quote (Faion) wetalq, рекомендую изучить cJass, и в частности подробно изучить возможности препроцессора, в особенности дерективу #define, которая позволяет творить чудеса недоступные на jass2\vjass\zinc. В особенности первым делом советую написать библиотеку для эвентов, что бы события создавать в 1 строчку. Ну и ознакомится с callback функциями, позволяет сэкономить огромное кол-во времени на написание кода.
ок, а еще один вопрос.
в какой то статье на xgm был сделан спел и там GetHandleId(t) был занесен в переменную, так его лучше заносить или не заносить в переменную ?
|
|
|
|
lawson | Дата: Среда, 14 Сентября 2011, 11:35:59 | Сообщение # 33 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| wetalq, Если часто используешь то заноси а если макс пару раз то не стоит.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
[DUОS] | Дата: Среда, 14 Сентября 2011, 21:54:27 | Сообщение # 34 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Faion) бж благотворно влияет на производительность. Я этого не говорил. Я сказал, что не все БЖ вредные.
|
|
|
|
Faion | Дата: Среда, 14 Сентября 2011, 22:50:38 | Сообщение # 35 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| только constant бж не вредные. Остальные все, даже если алгоритм верный и безутечный, снижают производительность, хоть и совершенно незначительно. Офк раскрывать не обязательно, особого смысла или прибавки к производительности не получить. Однако говорить что раскрытие - абсолютно бесполезно - неверно.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
[DUОS] | Дата: Четверг, 15 Сентября 2011, 14:50:11 | Сообщение # 36 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Faion) Однако говорить что раскрытие - абсолютно бесполезно - неверно. Сделает код менее читабельным раскрытие этого. А локалтригги - прямое зло.
|
|
|
|
Faion | Дата: Четверг, 15 Сентября 2011, 22:20:04 | Сообщение # 37 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (|DUОS|) Сделает код менее читабельным раскрытие этого. Религия не позволяет использовать препроцессор?._.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
|
|
|
|
|
|
|