каковы последствия наличия неиспользуемых функций - PullRequest
5 голосов
/ 18 октября 2010

Мне интересно, какие / если какие-либо последствия могут иметь неиспользуемые функции в коде?

Если вы выследите и удалите все неиспользуемые функции и переменные, будет ли какое-либо заметное улучшение производительности?

Или это просто хорошая практика, чтобы удалить неиспользуемые функции и переменные?

Ответы [ 7 ]

9 голосов
/ 18 октября 2010

Неиспользуемые функции не могут повредить производительности.Они усложняют работу для парней, которые поддерживают код.Современные IDE отслеживают неиспользуемые функции / методы и переменные.Если дело обстоит не так с технологией, о которой вы говорите, разработчикам придется иметь дело с неиспользуемым кодом, считая это необходимым.

4 голосов
/ 18 октября 2010

В зависимости от вашего компилятора / компоновщика, он может вообще не иметь затрат (и даже может быть удален автоматически) или давать небольшое наказание, потому что код больше и дает ошибки в кеше.Но я ожидаю, что это тоже будет очень незначительной разницей.

Редактировать: Удаление не может быть выполнено автоматически, когда есть вероятность, что другой код вызовет его, то есть библиотечный код или другой двоичный файл, который впоследствии можно будет повторно использовать.Это также зависит от языка - если вы пишете JavaScript, все будет загружено и, вероятно, проанализировано, так что это приведет к гораздо большим штрафам, чем в скомпилированных языках.

2 голосов
/ 18 октября 2010

существует проблема безопасности: если злоумышленник может контролировать выполнение вашего приложения (переполнение буфера, межсайтовый скриптинг и т. Д.), Фрагменты кода в памяти помогут ему достичь чего-то значительного (особенно верно, если доступ к фрагментам кода является привилегированным ресурсы, такие как ключи реестра и файлы).

2 голосов
/ 18 октября 2010

В большинстве языков неиспользуемые функции не будут влиять на производительность. Неиспользуемые функции влияют на размер кода / двоичного кода. В Javascript это влияет на время загрузки и время синтаксического анализа.

Неиспользуемые переменные могут немного повлиять на производительность, так как они занимают некоторое место в памяти. Но издержки некоторых неиспользованных переменных здесь и там, вероятно, также не поддаются измерению.

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

1 голос
/ 18 октября 2010

OCaml и Haskell предупреждают вас о неиспользуемых функциях / переменных при условии, что если вы определили их, это должно быть по какой-то причине, и их неиспользование может указывать на опечатку где-то еще в коде (например, вместо этого вызывается функция с аналогичным именем).В интересах этой дополнительной помощи я стараюсь избегать или, по крайней мере, комментировать вещи, которые я не использую.

Хороший компилятор просто оптимизирует удаление неиспользуемого кода, поэтому штраф за выполнение не будет.

0 голосов
/ 18 октября 2010

Они увеличат время компиляции, но конечный двоичный файл (или библиотека) не увеличится, поскольку все неиспользуемые символы должны быть разделены.

Как уже упоминалось, штраф за время выполнения отсутствует.*

0 голосов
/ 18 октября 2010

Просто хорошая практика. Почти каждый компилятор / компоновщик пропускает неиспользуемый код при компиляции с включенной оптимизацией.

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