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

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

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

offline
Опыт: 5,910
Активность:
Оптимизация
Доброго времени суток, дорогие хгмщики, созрел небольшой вопрос:
Как правильнее, вычислять одно число два(Например) раза или в самом начале создать переменную и вычислять один раз, а потом использовать переменную?Я подозреваю что добавлять переменную лучше.
Старый 23.08.2010, 18:01
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
MaHBe, смотря какого размера числа и флоаты ли они.
Старый 23.08.2010, 18:07
MaHBe

offline
Опыт: 5,910
Активность:
Можешь написать для всех вариантов,пожалуйста,а?
Старый 23.08.2010, 18:11
Nekit1234007

offline
Опыт: 11,916
Активность:
void SomeAction1()
{
    unit u = GetTriggerUnit()
    DoSmthng1(u)
    DoSmthng2(u)
    DoSmthng3(u)
    int i = 0
    whilenot(i>12)
    {
        DoSmthng4(u)
        i++
    }
    flush locals
}
// но
void SomeAction2() // быстрее
{
    DoSmthng1(GetTriggerUnit())
    DoSmthng2(GetTriggerUnit())
}
void SomeAction3() // медленнее
{
    unit u = GetTriggerUnit()
    DoSmthng1(u)
    DoSmthng2(u)
    flush locals
}
А для чисел эта разница очень не велика, особенно для целых.

Отредактировано Nekit1234007, 23.08.2010 в 18:19.
Старый 23.08.2010, 18:12
MaHBe

offline
Опыт: 5,910
Активность:
Nekit1234007, В сжасс не шарю, можно на классическом?)
Старый 23.08.2010, 18:14
Nekit1234007

offline
Опыт: 11,916
Активность:
Ок
function SomeAction1 takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local integer i = 0
    call DoSmthng1(u)
    call DoSmthng2(u)
    call DoSmthng3(u)
    loop
        exitwhen(i>12)
        call DoSmthng4(u)
        set i = i + 1
    endloop
    set u = null
endfunction
// но
function SomeAction2 takes nothing returns nothing // быстрее
    call DoSmthng1(GetTriggerUnit())
    call DoSmthng2(GetTriggerUnit())
endfunction

function SomeAction3 takes nothing returns nothing // медленнее
    local unit u = GetTriggerUnit()
    call DoSmthng1(u)
    call DoSmthng2(u)
    set u = null
endfunction
Старый 23.08.2010, 18:17
MaHBe

offline
Опыт: 5,910
Активность:
Спасибо)
Старый 23.08.2010, 18:22
Закрытая тема

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

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

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

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



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