Показать сообщение отдельно
Старый 21.02.2015, 01:56   #3
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Автоматический оптимизатор

Думать глобально это понимать что происходит, а не выполнять примитивные действия над листингом всей программы.

1 и 2 ссылка это просто штуки которые снимают небольшой оверхед возникающий в случае линковки, компилятор будет видеть код по обе стороны соединения как целое, но это не придает каких то новых качественных изменений в оптимизатор. Первая штука вообще только предоставляет инфу -- там нет оптимизатора, вторая штука работает в бэкенде компилятора, то есть либо с промежуточным трехадресным кодом, либо с ассемблерным кодом, что никак не глобально. Как вариант избежать оверхеда с прилинкованным кодом -- просто не создавать библиотеку в которой находится куча мелких функций вызываемых из программы. Избежание второго -- недопускать неряшливого кода, хотябы чуток думая о том как будет отображаться в памяти и обсчитываться то что ты пишешь. К тому же обе штуки генерят нестандартные объектные файлы что вызовет проблемы с инструментарием который их использует.
3 ссылка ну там описаны действия которые я отнёс к категории "издержки внутреннего устройства языков". Да их можно чуток оптимизировать, но это тоже примитивные действия, которые можно избежать "вручную".

Эти интсрументы нужны для оптимизации уже существующего в большом количестве кода, чтобы разом взять и как то оптимизировать, без особых разбирательств -- оптом всегда дешевле. Если код создаешь сам то имеешь больше возможности для действия.

Хорошие оптимизаторы появятся тогда, когда изобретут хотябы какой-то ИИ.
(Offline)
 
Ответить с цитированием