Сейчас 14:28:23 Суббота, 4 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Оптимизация
[Вопрос] Оптимизация
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 желательно даже не разворачивать - от неё польза, а не тупые вызовы фунок.


facepalm Вы реально не понимаете, что в итоге идет ссылка на тот код который мы можем развернуть? "Тупые вызовы функций" происходят как раз при использовании бж. Т.к. выполняется та же работа + ссылка. Я в шоке.

Добавлено (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
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Оптимизация
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz