Является ли импорт подстановочных знаков плохим в 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._, который не зависит от изменений, ваш файл не будет перекомпилирован.