Подтвердить что ты не робот

Разница в производительности между импортом дикой карты и требуемым импортом класса

Какова сложность с точки зрения производительности между

java.io.*

и

java.io.File

PS.

Я знаю, что первый будет включать в себя каждый файл в java.io.*, а следующий - только выбранный файл класса.

4b9b3361

Ответ 1

Во время выполнения 0.

Оба генерируют один и тот же байтовый код

Ответ 2

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

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

Я знаю, что первый будет включать каждый файл в java.io. *, а следующий только выбранный файл класса.

Не совсем. Звездный импорт делает доступными все имена классов. Сами по себе классы не "включены"... в смысле языков программирования C или C++.


Реальные причины, по которым многие люди используют явный импорт, а не импорт подстановочных знаков:

  • Явный импорт четко документирует, какие внешние классы использует класс напрямую, при условии, что вы не оставляете избыточный импорт в своем коде.

  • Явный импорт позволяет избежать проблем с конфликтами имен, возникающих при импорте двух пакетов, содержащих классы с одинаковым (простым) именем класса.

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

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

Ответ 4

Нет, не влияет на производительность времени выполнения. Поскольку оператор import является директивой компилятора и не преобразуется в байтовый код. Как указано в @Stephen C, накладные расходы на компиляцию составляют только.

Ответ 5

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

Информация для классов в импортированном пакете не читается в время компиляции или время выполнения, если класс не используется в программе. import просто сообщает компилятору, где классы. Разница в производительности между конкретным импортом и декларация импорта подстановочных знаков.

(Лян, Даниэль Ю. "Введение в компьютеры, программы и Java". Введение в программирование на Java. Всесторонняя версия. 9-е изд. N.p.: Pearson, n.d. 24. Print.)

Ответ 6

Между ними нет разницы в производительности.

Ответ 7

В jsp, если у вас есть 'Undefined Variables в EL', тогда следует избегать утверждения импорта wild card. Импорт дикой карты будет иметь огромное влияние на производительность во время выполнения (из-за обработки статического поля и метода).