Влияет ли неиспользуемый импорт и объекты на производительность - PullRequest
61 голосов
/ 04 января 2012

Я сомневаюсь, что неиспользуемые объекты импорта и неиспользуемые объекты в коде Java влияют на производительность?

Предположим, что объект инициализирован и никогда не используется, что происходит?А какова стоимость неиспользованного импорта

Ответы [ 5 ]

58 голосов
/ 04 января 2012

Это очень распространенный вопрос.

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

Неиспользуемый импорт оказывает тривиальное влияние на компилятор, но нет импорта ни в байтовом коде, ни во время выполнения.

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

20 голосов
/ 04 января 2012

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

Помимо читабельности кода и, следовательно, удобства сопровождения кода, может происходить более быстрая компиляция Java-кода (однако, это незаметно) путем упорядочения импорта, но это не влияет на производительность во время выполнения, поскольку на генерируемый байт-код не влияет неубранный импорт. Сгенерированный байт-код остается прежним.

8 голосов
/ 21 октября 2015

Хотя влияние при компиляции минимально, влияние при развертывании может быть плохим. Я только что натолкнулся на неиспользованный импорт, который требовал отдельной библиотеки, которая стала зависимостью maven. К счастью, дальнейшая проблема переходной зависимости не была найдена, но война была более густой без причины. Добавьте к этому лишнюю банку в загрузчике классов веб-приложения.

1 голос
/ 01 сентября 2018

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

0 голосов
/ 27 августа 2018

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

...