28 марта 2009, 09:00. рейтинг: 1629
Задача: протестировать оптимизирующий компилятор С++ (gcc, естественно) для встраиваемого PowerPC-процессора.
Тестовый стенд: отладочная плата, на ней проц, основной способ взаимодейс твия с которым – интерфейс RS-232. Чтобы не заморачиваться с передачей данных по COM-порту, я решил смухлевать — сделал все тестовые данные константными.
Скомпилировал программу с несколькими уровнями оптимизации, открыл ассемб лерный исходник в отладчике и стал сравнивать результаты оптимизации. Вот что получилось.
Уровень оптимизации 0. Код толстый и красивый, все вычисления выполняются самым прямолинейным, тупым и очевидным способом. Предсказуемо...
Уровень оптимизации 1. Код стал компактнее, откровенно тупые действия выре заны, но некоторая рыхлость всё ещё есть. Не впечатляет.
Уровень оптимизации 2. Объекты пропали. Память больше не задействована, вместо нее работают 32 регистра процессора. Так держать!
Уровень оптимизации 3. Загрузка вычисленного значения в регистр как константы. Всё. Объём кода – 8 байт, или две инструкции (две, потому что загрузка константы на этой архитектуре идёт по полуслову).
Домухлевался. Один-ноль в пользу компилятора!
ТЕЛЕГРАМКанал с обзорами, анонсами новинок и книжными подборками
Книжный Вестник
Бот для удобного поиска книг (если не нашлось на сайте)
Поиск книг
Свежие любовные романы в удобных форматах
Любовные романы
Детективы и триллеры, все новинки
Детективы
Фантастика и фэнтези, все новинки
Фантастика
Отборные классические книги
Классика
Библиотека с любовными романами, которая наверняка придётся по вкусу женской части аудитории
Любовные романы
Библиотека с фантастикой и фэнтези, а также смежных жанров
Фантастика
Самые популярные книги в формате фб2
Топ фб2
книги