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

Другие вопросы по тегам