Size: a a a

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

2020 February 29

AZ

Alexander Zaitsev in cxx.Дискуссионная
Till Schneider
@r_mustang  сказал, что это
    
int val = -1;
   if(val < 0) {
       val *= -1;
   }


быстрее вот этого
int n = -6;
int const mask = n >> sizeof(int) * 8 - 1;

abs = ((n + mask) ^ mask)
ну меня варик с cmp и imul смущает, честно говоря :)))
источник

TD

Tyler Durden in cxx.Дискуссионная
звучит хайпово
источник

RM

Roy Mustang in cxx.Дискуссионная
koren
gcc компактнее msvc
Поставь для кода справа тоже gcc
источник

RM

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

RM

Roy Mustang in cxx.Дискуссионная
и добавь volatile для int n
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
если они логически эквивалентны (я не проверял), то варик без ветвлений должен быть шустрее
источник

RM

Roy Mustang in cxx.Дискуссионная
Хочу чтоб Тилль пососал
источник

TS

Till Schneider in cxx.Дискуссионная
Alexander Zaitsev
ну меня варик с cmp и imul смущает, честно говоря :)))
угу, это довольно дорого
источник

k

koren in cxx.Дискуссионная
Roy Mustang
Поставь для кода справа тоже gcc
Код ведь одинаков
источник

VS

Vladimir Suisei in cxx.Дискуссионная
Где там указано время?
источник

RM

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

O

Ofee in cxx.Дискуссионная
Till Schneider
@r_mustang  сказал, что это
    
int val = -1;
   if(val < 0) {
       val *= -1;
   }


быстрее вот этого
int n = -6;
int const mask = n >> sizeof(int) * 8 - 1;

abs = ((n + mask) ^ mask)
Я не эксперт, но мне godbolt показывает, что оно одинаково работает
источник

RM

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

AZ

Alexander Zaitsev in cxx.Дискуссионная
один shr, один add, один xor
источник

RM

Roy Mustang in cxx.Дискуссионная
Дайте ему пососать
источник

TS

Till Schneider in cxx.Дискуссионная
Ofee
Я не эксперт, но мне godbolt показывает, что оно одинаково работает
потому что надо не на асм смотреть, а на бенч
источник

RM

Roy Mustang in cxx.Дискуссионная
А то у него труба горит
источник

TD

Tyler Durden in cxx.Дискуссионная
Тиль Шнайдер
источник

TD

Tyler Durden in cxx.Дискуссионная
Германия форефа?
источник

VS

Vladimir Suisei in cxx.Дискуссионная
Till Schneider
потому что надо не на асм смотреть, а на бенч
Сделай бенч
источник