LINUX.ORG.RU

C + ASM


0

0
Допустим есть некий алгоритм и его реализация на С. Предположим, что они максимально оптимизированы. Вопрос : если требуется добиться максимальной скорости выполнения кода, то есть ли смысл использовать ассемблерные вставки, или это не даст существенного прироста в скорости исполнения (т.е. gcc создаст и так оптимальный код).
anonymous
Смотря для какой архитектуры (оптимизировать руками для p1 с его uv-пайпами - не самое приятное занятие). gcc, как правило, генерит код на троечку.
mv ★★★★★
()
Мой опыт из далекого детства (i.e. там был достаточно наивный код как на ассемблере, так и на C и компилятор был микрософтовский) говорит, что раз на раз не приходится, расхождение было до нескольких раз в обе стороны. Рекоммендуют только вместо ассемблерных вставок переписать нужную функцию целиком на ассемблере, либо взять сгенеренный gcc код (-s) и от него уже плясать.
AMDmi3
()
Зачастую не имеет.
Miguel ★★★★★
()
часто боттл-нек это ввод-вывод (в память, на диск, или в сеть) и оптимизация ассемблерных инструкций не очень важна
dilmah ★★★★★
()
Если требуется добиться максимальной скорости выполнения кода, то вам надо использовать профайлер и смотреть где узкие места и как их лучше исправить. Не стоит вслепую кидаться переписывать все на ассемблере.
anonymous
()
Ответ на: комментарий от anonymous
Для начала попробуйте стандартный gprof из binutils, но у него были проблемы с многонитевыми (threaded) приложениями. Более специфичную информацию можно получить с помощью утилит из valgrind (вплоть до вероятных промахов кеша процессора). Гугл выложили свои Google Performance Tools там тоже есть профайлер, но ничего про него сказать не могу - не пробовал.
anonymous
()
Если разработка идёт под конкретный процессор, то имеет смысл. Зная подробности архитектуры, можно подстроить под неё и сделать так, чтобы использовалось максимально возможностей проца. То есть, вручную "подсказать" процессору, чтобы он заранее загрузил нужные данные в кэш, перестроить арифметические операторы так, чтобы одновременно использовалось несколько АЛУ и тд.
krum
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.