Является ли импорт подстановочных знаков плохим в Scala в отношении пошаговой компиляции?
В Scala, плохо ли с точки зрения эффективности и скорости инкрементных компиляторов (sbt, sbt в Eclipse, IntelliJ) использовать импорт подстановочных знаков? Влияет ли это на то, как эти инкрементные компиляторы решают, что перекомпилировать в случае изменений?
Например, если для нового класса X
Мне нужно только импортировать классы A
а также B
(и не C
) из пакета pack
я получу штраф за написание этого:
import pack._
вместо этого?
import pack.{ A, B }
Если предположить, A
а также B
не зависит от C
, было бы X
перекомпилировать с импортом с подстановочными знаками, а не с более конкретным импортом, когда C
изменения, или система отслеживания зависимостей будет достаточно умной, чтобы понять, что C
не используется X
несмотря на импорт подстановочных знаков?
1 ответ
Есть одно крошечное воздействие, но вы, вероятно, не заметите его. В результате, когда есть ссылка на символ "Foo", компилятор должен преобразовать "Foo" в полное имя. Область поиска "Foo" зависит от импорта по шаблону. Но все это делается в памяти, и вы почти наверняка не заметите таких крошечных различий в скорости разрешения, если у вас нет чего-то сумасшедшего, например, тысячи классов в одном пакете.
Кроме этого, никакого влияния. Если вы импортируете pack._ и какой-нибудь произвольный класс в pack._, который не зависит от изменений, ваш файл не нужно будет перекомпилировать.