Size: a a a

IT KPI C/С++ ХВ (хорошо, что не UB)

2020 January 30

AB

Aleksey Belkevich in IT KPI C/С++ ХВ (хорошо, что не UB)
Скинь то что тестировал
источник

AB

Aleksey Belkevich in IT KPI C/С++ ХВ (хорошо, что не UB)
Оптимизатор исходит из состояний
Если сделал обёртку где объявляешь данные внутри void процедуры, по ним же делаешь поиск и выходишь, то в таком случае процедура сверёнтся до ret
источник

AB

Aleksey Belkevich in IT KPI C/С++ ХВ (хорошо, что не UB)
Т.к. в ней нету смысла
источник

AB

Aleksey Belkevich in IT KPI C/С++ ХВ (хорошо, что не UB)
А вот если кто-то аффектит твой вектор, уже другой разговор
источник

AP

Alexander Pavlyuchuk in IT KPI C/С++ ХВ (хорошо, что не UB)
скорее всего оно НЕ соптимизирует, если речь была o .size
источник

AP

Alexander Pavlyuchuk in IT KPI C/С++ ХВ (хорошо, что не UB)
если контейнер как-то менялся, даже без изменения размера
источник

AB

Aleksey Belkevich in IT KPI C/С++ ХВ (хорошо, что не UB)
Лучший замер качества оптимизатора это пробежаться по дизассемблеру, чем замерять производительность
Т.к. оптимизатор исходит из найболее вероятных сценариев, а на деле прогадает
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
Aleksey Belkevich
Лучший замер качества оптимизатора это пробежаться по дизассемблеру, чем замерять производительность
Т.к. оптимизатор исходит из найболее вероятных сценариев, а на деле прогадает
тут ты прав
источник
2020 January 31

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
шо там метро? не спишь, работаешь?)
источник

OS

Oleksandr Syrotiuk in IT KPI C/С++ ХВ (хорошо, что не UB)
kvark
шо там метро? не спишь, работаешь?)
🤔, да вроде как сплю, рефлексирую над крестами.
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
Aleksey Belkevich
Первый, только вызов метода из условия надо убрать, т.к. размер статичный на протяжении цикла
лолирую, ты был прав.
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
оно это не оптимизирует
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
но оно выполняется один раз, по этому разницы нет
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
вооот в итоге очень странный результат.
участки дизасемблера, которые выполняются много раз
это самописный алгоритм, который выполняется по замерам кааапельку быстрее

00007FF7DA0813E0  cmp         dword ptr [r8],1E240h  
00007FF7DA0813E7  je          main+168h (07FF7DA0813F8h)  
00007FF7DA0813E9  inc         r9d  
00007FF7DA0813EC  add         r8,0Ch  
00007FF7DA0813F0  movsxd      rax,r9d  
00007FF7DA0813F3  cmp         rax,rdx  
00007FF7DA0813F6  jb          main+150h (07FF7DA0813E0h)


это find if:
00007FF7DA081460  cmp         dword ptr [rax],1E240h  
00007FF7DA081466  je          main+1E1h (07FF7DA081471h)  
00007FF7DA081468  add         rax,0Ch  
00007FF7DA08146C  cmp         rax,rcx  
00007FF7DA08146F  jne         main+1D0h (07FF7DA081460h)  

я чет не пойму почему по времени первый выполняется быстрее. в нем всё то же что и в find_if и даже больше
источник

B

Bogdan in IT KPI C/С++ ХВ (хорошо, что не UB)
kvark
оно это не оптимизирует
Ты еще в дебагбилде собрал, поди.

Там ничего не оптимизируется
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
Bogdan
Ты еще в дебагбилде собрал, поди.

Там ничего не оптимизируется
релиз
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
64
источник

k

kvark in IT KPI C/С++ ХВ (хорошо, что не UB)
O2
источник

B

Bogdan in IT KPI C/С++ ХВ (хорошо, что не UB)
Хм, окок

Просто смутило окно отладчика студии)
источник