Size: a a a

cxx.Дискуссионная

2020 March 26

IO

Igor Okhremchuk in cxx.Дискуссионная
Test(unsigned int&, std::function<void ()>):             # @Test(unsigned int&, std::function<void ()>)
       push    rbx
       mov     rbx, rdi
       cmp     qword ptr [rsi + 16], 0
       je      .LBB0_2
       mov     rdi, rsi
       call    qword ptr [rsi + 24]
.LBB0_2:
       add     dword ptr [rbx], 50
       pop     rbx
       ret
источник

IO

Igor Okhremchuk in cxx.Дискуссионная
Вот твой аутпут
источник

RM

Roy Mustang in cxx.Дискуссионная
O3
источник

RM

Roy Mustang in cxx.Дискуссионная
Я же написал
источник

RM

Roy Mustang in cxx.Дискуссионная
Igor Okhremchuk
Вот твой аутпут
Это функция при оптимизации не удалилась
источник

IO

Igor Okhremchuk in cxx.Дискуссионная
То же самое скомпилило
источник

RM

Roy Mustang in cxx.Дискуссионная
Покажи мне вызов Test функции
источник

RM

Roy Mustang in cxx.Дискуссионная
Там перед вызовом std::cout в регистр ESI кладется 150
источник

RM

Roy Mustang in cxx.Дискуссионная
А затем вызывается std::cout который из ESI берет 150 на вывод
источник

RM

Roy Mustang in cxx.Дискуссионная
В зависимости от примера конечно же, там в одном примере это 150, в другом 151
источник

Т8

Т-34 85 in cxx.Дискуссионная
Igor Okhremchuk
У тебя нету пуша в стек параметров, нету вызова другой функции, в которой ещё и джамп, разумеется из-за ифа
А без знания ассемблера как правильно оценить разницу?
источник

Т8

Т-34 85 in cxx.Дискуссионная
А то я не в курсе, рой тоже
источник

RM

Roy Mustang in cxx.Дискуссионная
Т-34 85
А то я не в курсе, рой тоже
Ну я вообще то оценил разницу
источник

Т8

Т-34 85 in cxx.Дискуссионная
А пилить перформансное хочется
источник

RM

Roy Mustang in cxx.Дискуссионная
Там нет её при O3
источник

RM

Roy Mustang in cxx.Дискуссионная
Щас гляну O2
источник

IO

Igor Okhremchuk in cxx.Дискуссионная
Ну при О3 просто результат посчитало
источник

Т8

Т-34 85 in cxx.Дискуссионная
Roy Mustang
Ну я вообще то оценил разницу
Ты же сказал, что разница невелика. То есть, ты не шаришь в ассемблере
источник

RM

Roy Mustang in cxx.Дискуссионная
Идентичны
источник

RM

Roy Mustang in cxx.Дискуссионная
Т-34 85
Ты же сказал, что разница невелика. То есть, ты не шаришь в ассемблере
Я не анализировал ассемблерный код, я просто глянул что добавилась функция Test
источник