Мертвый код - Dead code
Период, термин мертвый код имеет несколько определений. Некоторые используют этот термин для обозначения кода (т.е. инструкций в памяти), который никогда не может быть выполнен во время выполнения.[1][2][3]В некоторых областях компьютерное программирование, мертвый код это раздел в исходный код программы, которая выполняется, но результат которой никогда не используется ни в каких других вычислениях.[4][5] Выполнение мертвого кода тратит время вычислений и память.
Хотя результат мертвого вычисления никогда не может быть использован, он может вызвать исключения или повлиять на какое-то глобальное состояние, поэтому удаление такого кода может изменить вывод программы и ввести непреднамеренные ошибки. Оптимизация компилятора обычно консервативна в своем подходе к удалению мертвого кода, если есть какая-либо двусмысленность в отношении того, повлияет ли удаление мертвого кода на вывод программы. Программист может помочь компилятору в этом вопросе, дополнительно используя статический и / или в соответствии функции и позволяющие использовать оптимизация времени компоновки.
Пример
int фу (int iX, int iY){ int iZ = iX/iY; возвращаться iX*iY;}
В приведенном выше примере, хотя разделение iX к iY вычисляется и никогда не используется, при делении на ноль будет выдано исключение. Следовательно, удаление мертвого кода может изменить вывод программы.
Анализ
Устранение мертвого кода это форма оптимизация компилятора в котором мертвый код удаляется из программы. Анализ мертвого кода можно выполнить с помощью анализ живых переменных, форма статический анализ кода и анализ потока данных. Это контрастирует с анализом недоступного кода, который основан на поток управления анализ.
Техника устранения мертвого кода относится к тому же классу оптимизаций, что и недостижимый код устранение и избыточный код устранение.
В крупных проектах программирования иногда бывает трудно распознать и удалить мертвый код, особенно когда становятся мертвыми целые модули. Создание тестовых шаблонов может создать впечатление, что код все еще жив, и иногда язык контракта может требовать доставки кода, даже если код больше не актуален.[6]
Немного Иды (например, Xcode, Visual Studio 2010[7] и Затмение Галилео[8]) имеют возможность находить мертвый код на этапе компиляции.
В то время как большинство методов оптимизации стремятся удалить мертвый код в реализации, в крайних формах оптимизации для размера иногда может быть желательно намеренно ввести и тщательно сформировать, казалось бы, мертвый код, когда это позволяет складывать в противном случае несвязанные части кода вместе (и тем самым уменьшать их комбинированный размер), так что дополнительный код эффективно не повредит первый путь выполнения через код, но используется для выполнения действий, необходимых для альтернативных путей выполнения, для которых другие разделы кода могут стать мертвым кодом. На более функциональном уровне это можно рассматривать как искусственное введение безвредных / полезных побочных эффектов и уменьшение избыточности кода, но его также можно использовать вплоть до уровня кода операции, чтобы разрешить использование более коротких инструкций. , что было бы невозможно при сворачивании кодовых последовательностей без согласованного введения побочных эффектов, вызванных мертвым кодом.
Смотрите также
- Устранение мертвого кода
- Резервный код
- Недостижимый код
- Код Оксбоу
- Мертвый магазин
- 0xDEADC0DE это Магическое число написано в Hexspeak используется как маркер в OpenWRT прошивка
Рекомендации
- ^ Хунвэй Си, Устранение мертвого кода через зависимые типы
- ^ [1] DO-178B
- ^ DO-178B Википедия / DO-178B.
- ^ Дебрей, С. К., Эванс, В., Мут, Р., и Де Саттер, Б. 2000. Компиляторные методы для сжатия кода. ACM Trans. Программа. Lang. Syst. 22, 2 (март 2000 г.), 378-415.
- ^ Аппель, А.В. 1998 Реализация современного компилятора на Java. Издательство Кембриджского университета.
- ^ Дуглас В. Джонс Обслуживание мертвого кода, риски 8.19 (1 февраля 1989 г.) В архиве 2011-07-08 в Wayback Machine
- ^ Хабиб Гейдариан, Microsoft Corp
- ^ Руководство разработчика Eclipse
внешняя ссылка
- Детектор мертвого кода (DCD) просто находит никогда не использовавшийся код в ваших приложениях Java / JEE
- Сравнения некоторых детекторов мертвого кода Java
- UCDetector Плагин Eclipse для поиска мертвого Java-кода