На процессорах Intel Sandy Bridge и выше - до Broadwell, инструкция ADC занимает 2uop при декодировании и имеет latency 2.
Это та информация которую вы легко можете найти у Агнера Фога: agner.org/optimize.
Однако, эта информация не полна. Начиная с Intel Sandy Bridge Family, процессор при обработке данной команды поддерживает специальный случай, а именно:
#optimization #asm
Это та информация которую вы легко можете найти у Агнера Фога: agner.org/optimize.
Однако, эта информация не полна. Начиная с Intel Sandy Bridge Family, процессор при обработке данной команды поддерживает специальный случай, а именно:
ADC Reg64, 0
Здесь мы получим декодирование ADC как 1uop и latency 1. Факт, вообще говоря нигде не описанный и мало кому известный. Да, теперь ты знаешь больше!#optimization #asm
agner.org
Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X
Software optimization manuals for C++ and assembly code. Intel and AMD x86 microprocessors.
Windows, Linux, BSD, Mac OS X. 16, 32 and 64 bit systems. Detailed denoscriptions of microarchitectures.
Windows, Linux, BSD, Mac OS X. 16, 32 and 64 bit systems. Detailed denoscriptions of microarchitectures.
Вот здесь^ найдешь FAQ по замеру Latency / Throughput на Arm Cortex A53, а также, некоторые произведенные замеры, что бесспорно улучшит качество твоего ПО под мобильные платформы: +скорость, +энергоэкономность.
#optimization #arm #asm
#optimization #arm #asm
О обратной связи с автором этого канала, красивых цифрах и просто хвастовстве:
=========================
Phone: +7 987 111 1337
Автомобильный номер вида x777xx
Site: https://1337.xxx
=========================
#callback #contacts
=========================
Phone: +7 987 111 1337
Автомобильный номер вида x777xx
Site: https://1337.xxx
=========================
#callback #contacts
dynamic_cast<void*>(T)
возвращает указатель на 'Самый Производный Класс' в иерархии!#cxx #interesting
image_2019-09-18_15-24-00.png
29.1 KB
О том, почему компиляторы не так хороши, как тебе говорят^. Фиксится, кстати, заменой uint64_t на int64_t.
#optimization #asm #cxx
#optimization #asm #cxx
0x1337
image_2019-09-18_15-24-00.png
Ну и раз уж пошли такие тЁрки, вот тебе советец:
Работая с RT преобразованиями типов, обязательно проверяй генерируемый ASM код. Особенно, когда речь заходит о преобразованиях знаковых типов в беззнаковые. Интуитивно кажется что с беззнаковыми типами работать быстрее. Однако, это ловушка, которая очень круто показывает себя, например при преобразовании double->uint64_t.
#asm #cxx #missoptimization
Работая с RT преобразованиями типов, обязательно проверяй генерируемый ASM код. Особенно, когда речь заходит о преобразованиях знаковых типов в беззнаковые. Интуитивно кажется что с беззнаковыми типами работать быстрее. Однако, это ловушка, которая очень круто показывает себя, например при преобразовании double->uint64_t.
#asm #cxx #missoptimization
Да, ты ведь знаешь, что static_cast<integer_type> из double / float типа, хотя и выполняется compile-time - дает накладные расходы в run-time? Неплохие такие расходы, я бы сказал!
#cxx #optimisation
#cxx #optimisation
Табличка с замерами Latency / Throughput, которой ну очень удобно пользоваться. Кстати, информация куда более полная чем у Агнера Фога:
https://uops.info/table.html
#optimization #asm
https://uops.info/table.html
#optimization #asm