[bash.im] [IT Happens] [zadolba.li]

IT Happens

Клиент и саппорт. Разработчик и заказчик. Программист и программа. Вести с фронтов.

#709: Кто кого обманет

28 марта 2009, 09:00

рейтинг: 1629

Задача: протестировать оптимизирующий компилятор С++ (gcc, естественно) для встраиваемого PowerPC-процессора.

Тестовый стенд: отладочная плата, на ней проц, основной способ взаимодействия с которым - интерфейс RS-232. Чтобы не заморачиваться с передачей данных по COM-порту, я решил смухлевать — сделал все тестовые данные константными.

Скомпилировал программу с несколькими уровнями оптимизации, открыл ассемблерный исходник в отладчике и стал сравнивать результаты оптимизации. Вот что получилось.

Уровень оптимизации 0. Код толстый и красивый, все вычисления выполняются самым прямолинейным, тупым и очевидным способом. Предсказуемо...

Уровень оптимизации 1. Код стал компактнее, откровенно тупые действия вырезаны, но некоторая рыхлость всё ещё есть. Не впечатляет.

Уровень оптимизации 2. Объекты пропали. Память больше не задействована, вместо нее работают 32 регистра процессора. Так держать!

Уровень оптимизации 3. Загрузка вычисленного значения в регистр как константы. Всё. Объём кода - 8 байт, или две инструкции (две, потому что загрузка константы на этой архитектуре идёт по полуслову).

Домухлевался. Один-ноль в пользу компилятора!

 
 
текст или номер истории
реклама
обратная связь
Хотите разместить рекламу?
Информация для рекламодателей.

Вопросы, предложения, что-то не так на сайте? Пишите в саппорт!
статистика
Рейтинг@Mail.ru