Является ли импорт подстановочных знаков плохим в Scala относительно инкрементной компиляции? - программирование

Является ли импорт подстановочных знаков плохим в Scala относительно инкрементной компиляции?

В Scala, плохо ли с точки зрения эффективности и скорости инкрементных компиляторов (sbt, sbt в Eclipse, IntelliJ) использовать импорт подстановочных знаков? Не влияет ли это на то, как эти инкрементные компиляторы решают, что перекомпилировать в случае изменений?

Например, если для нового класса X мне нужно будет только импортировать классы A и B (а не C) из пакета pack, я получаю штраф за запись этого

import pack._

вместо этого?

import pack.{ A, B }

Предполагая, что A и B не имеют зависимости от C, будет ли X перекомпилироваться с подстановочным импортом, а не с более конкретным импортом при изменении C или будет ли система отслеживания зависимостей умнее достаточно, чтобы понять, что C не используется X, несмотря на импорт подстановочных знаков?

4b9b3361

Ответ 1

Есть одно небольшое влияние, но вы, вероятно, этого не заметите. Воздействие заключается в том, что когда есть ссылка на символ "Foo" , компилятор должен разрешить "Foo" в полное имя. Область поиска, где он может искать "Foo" , зависит от импорта подстановочных знаков. Но все это сделано в памяти, и вы почти наверняка не заметите таких крошечных различий в скорости разрешения, если у вас нет чего-то сумасшедшего, как тысячи классов в одном пакете.

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