Эльбрус/оптимизация: различия между версиями

Материал из ALT Linux Wiki
м (+-O2)
м (→‎Ссылки: +1 от Алексея Борисова (Gaijin))
Строка 32: Строка 32:
* [http://alexanius.ru/comp_opt_azbuka.html Азбука оптимизаций компилятора (дорабатывается)] (Алексей Маркин)
* [http://alexanius.ru/comp_opt_azbuka.html Азбука оптимизаций компилятора (дорабатывается)] (Алексей Маркин)
* [http://0x1.tv/20210617J Оптимизация СПО для платформы Эльбрус] ([http://vimeo.com/64297725 видео], слайды)
* [http://0x1.tv/20210617J Оптимизация СПО для платформы Эльбрус] ([http://vimeo.com/64297725 видео], слайды)
* [http://youtube.com/watch?v=Azh25lsHqPE UNIGINE C++ School 1.1 - Лекция #1 - Мировые константы] (общее)


{{Category navigation|title=E2K|category=E2K|sortkey=*}}
{{Category navigation|title=E2K|category=E2K|sortkey=*}}

Версия от 15:58, 3 сентября 2022

Вопросы, ответы и прочие заметки по части оптимизации кода под "Эльбрус".

FAQ

-O2

Q: Мой код на x86 собирается с -O2, почему он работает так медленно на "Эльбрусе"?

A1: lcc осмысленным образом поддерживает уровни оптимизации вплоть до -O4, при этом в дистрибутивах ОС Альт (и вроде как Эльбрус Линукс) штатно применяется -O3; попробуйте указать этот уровень оптимизации для сборки. Вслепую задавать -O4 не следует, т.к. результаты могут быть противоречивыми и обязательно надо смотреть предметно.

A2: Проверьте, что хотя бы -O2 при сборке на e2k "долетело" до компилятора -- make V=1 VERBOSE=1 в случае cmake либо ps auxww | grep -- -O в общем случае. Попадались сборочные системы, которые вовсе ничего не передавали, что на lcc равнозначно -O0 (в альте сделана обёртка, которая при отсутствии -O* выставляет -O3, но закладываться на такую подстраховку всё же не следует).

if-else-if-else vs switch

Q: Если много условий в elseif, то м.б. переделать на switch case, будет быстрее? (Сергей Еронов)

A: Если switch сможет соптимизироваться, то да. Если нет - то по скорости будет так же. Так что лучше переделать.

Это к ситуации, если идёт цепочка if-else if-...else if-else. Если подразумевалось много условий внутри одного else if, то неважно. (Alex Markin)

Ссылки