I2R

Добавлен
Нужно ли использовать эту функцию во время сравнений и мат. операций для конвертации целочисленных в числа с плавающей точкой?

Принятый ответ

Ок, вечером протестирую, выложу результат.
Протестировал без циклов и в разных потоках, без умножения и функции быстрее.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
6 лет назад
0
Похожие вопросы:

ответ
functio
решил проблему
Каким оброзом Стан юнит записовался в переменую я не пойму но как то записовался я даже пытался ставить иф чтоб тока герой мог записаца не помагало пришлось после поставет
после запесе
ответ
Проблема решена, причина была в моей криворукости.
ответ
А, всё. Уже самостоятельно понятно )))
Догадавшимся мб поставлю лайк.
ответ
Проблема в том что это конверт из ГУИ со всякими ненужными бжфункциями типа GetLastCreatedLightningBJ() и CountUnitsInGroup(Group) == 0 вместо FirstOfGroup(Group)==null, без форматирования под код, в котором черт ногу сломит.
target_integer - переменная объявлена, нигде не используется, и т.д.
ответ
Clamp:
Статью уже кидали, ответа на вопрос там нет.
Давно видел эту статейку на HIVE, думал, что её уже давно кинут сюда)
Там и есть ответы на интересующие меня вопросы.
Вот тут ещё об этом.

0
32
6 лет назад
0
Эм? А почему сразу real не сравнивать?
0
17
6 лет назад
0
Сомневаюсь что округляться будет в нужную сторону, да и легче сразу real сравнивать.
0
13
6 лет назад
0
Integer наследует Real, поэтому переменную типа integer можно использовать, как real (но не наоборот).
0
28
6 лет назад
Отредактирован PT153
0
PyCCKuu_4eJl:
Сомневаюсь что округляться будет в нужную сторону, да и легче сразу real сравнивать.
Простите, а что будет округлятся у целочисленных?
Fakov:
Эм? А почему сразу real не сравнивать?
Ситуация такая. Есть число целое, есть нецелое. Мне нужно их сравнить\сложить\умножить\разделить\вычесть.
Вопрос: нужно ли конвертировать целое в нецелое с помощью I2R(), и что будет, если этого не сделать?
Я вот на HIVE читал, что I2R(int) медленнее, чем int * 1.0, но я хотел бы уточнить эту информацию и выяснить вообще необходимость конвертации как и с помощью I2R(), так и с помощью умножения на 1.0.
Пушистый:
Integer наследует Real, поэтому переменную типа integer можно использовать, как real (но не наоборот).
Нет, integer базовый тип, да и хранятся они по-разному.
0
16
6 лет назад
0
если один из операндов реал, то второе будет автоматом сконвертировано. если операнды не используют точку, то будет работать как с целыми. вызов функции дороже мат. операции.
0
28
6 лет назад
0
вызов функции дороже мат. операции.
Понятно, а зачем тогда вообще функция I2R()?
Что потребует больше времени?
local real r = 100.
local integer i = 100
local real u = r + i * 1.
// или
local real r = 100.
local integer i = 100
local real u = r + i
local real r = 100.
local integer i = 100
local boolean b = r != i * 1.
// или
local real r = 100.
local integer i = 100
local boolean b = r != i
0
16
6 лет назад
0
Ну просто функция - это официальный вариант, а можно перемножить
Затраты времени в мат операциях ничтожны по определению
0
28
6 лет назад
0
Ну просто функция - это официальный вариант, а можно перемножить
Нужно ли вообще перемножать?
Что потребует больше времени?
local real r = 100.
local integer i = 100
local real u = r + i * 1.
// или
local real r = 100.
local integer i = 100
local real u = r + i
local real r = 100.
local integer i = 100
local boolean b = r != i * 1.
// или
local real r = 100.
local integer i = 100
local boolean b = r != i
0
20
6 лет назад
0
Жасс расходует время на чтение символов (на хайве видел 5мс на сисвол, но, вероятно, имелось в виду мкс или типа того, ибо иначе выходит больно жирно, не уверен. Расходуется больше времени на чтение чем на подобные мелкие операции. Но делать сильно крутую оптимизацию стоит лишь для циклов, групп юнитов и т.п. Не лагает - забей. Хотя имеет смысл научиться сразу все делатб по человечески, да :)
0
17
6 лет назад
0
Diaboliko, Поделитесь ссылочкой, если осталась? :3
0
20
6 лет назад
0
там на форуме что то со словом lab в качестве подфорума. Я пока не у компа
Там всякие перформанс обсуждения
0
28
6 лет назад
Отредактирован PT153
0
Тестировал время с помощью файла, который дал мне DracoL1ch. Кому нужно, могу кинуть в ЛС.
Без умножения и I2R() вышло быстрее.
Код, которым тестировал
function Trig takes nothing returns nothing
    local real r = 1.
    local integer i = 1
    local integer a = 1
    call ClearTextMessages()
    call StartPerfCounter()
    call DebugMsg("BEGIN!!!")
    call StopPerfCounter()
    call DebugMsg("Non convert")
    call StartPerfCounter()
    loop
        set r = r - i
        set a = a + 1
        exitwhen a == 1000
    endloop
    call StopPerfCounter()
    
    call DebugMsg("*1.")
    set a = 1
    call StartPerfCounter()
    loop
        set r = r - i * 1.
        set a = a + 1
        exitwhen a == 1000
    endloop
    call StopPerfCounter()
    
    call DebugMsg("I2R")
    set a = 1
    call StartPerfCounter()
    loop
        set r = r - I2R(i)
        set a = a + 1
        exitwhen a == 1000
    endloop
    call StopPerfCounter()
endfunction

function InitTrig_I2R_test takes nothing returns nothing
    set gg_trg_I2R_test = CreateTrigger(  )
    call TriggerRegisterTimerEvent( gg_trg_I2R_test, 5, true)
    call TriggerAddAction( gg_trg_I2R_test, function Trig )
endfunction
4
16
6 лет назад
4
жасс читает символы один раз, при загрузке, а дальше всё в байткоде и не имеет никакого значения
тестирование нужно запускать в разных тредах, чтобы не было накопительного эффекта, и без циклов, ибо варкрафт как-то суперплохо с ними работает и они сбивают все замеры. пруфы - www.hiveworkshop.com/threads/hashtable-vs-array.289909
у меня под это дело вынесен специальный скрипт, генерирующий две стены
function SpeedRun takes nothing returns nothing

locals
call fStartTimer()
variant 1
variant 1
variant 1
call BJDebugMsg("Variant 1: "+I2S(fStopTimer()))
call ExecuteFunc("SpeedRunX")
endfunction

function SpeedRunX takes nothing returns nothing

locals
call fStartTimer()
variant 2
variant 2
variant 2
call BJDebugMsg("Variant 2: "+I2S(fStopTimer()))
endfunction
0
28
6 лет назад
Отредактирован PT153
0
Ок, вечером протестирую, выложу результат.
Протестировал без циклов и в разных потоках, без умножения и функции быстрее.
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.