Is wildcard import bad in Scala with respect to incremental compilation?

雨燕双飞 提交于 2020-01-01 04:08:17

问题


In Scala, is it bad, from the point of view of efficacy and speed of incremental compilers (sbt, sbt in Eclipse, IntelliJ), to use wildcard imports? Does it adversely affect the way these incremental compilers decide what to recompile in case of changes?

For instance, if for a new class X, I would only need to import classes A and B (and not C) from package pack, do I get a penalty for writing this:

import pack._

instead of this?

import pack.{ A, B }

Assuming A and B have no dependency on C, would X be recompiled with the wildcard import and not with the more specific import when C changes, or would the dependency tracking system be smart enough to realize that C is not used by X despite the wildcard import?


回答1:


There is one tiny impact, but you probably won't notice it. The impact is that when there's a reference to symbol "Foo" the compiler must resolve "Foo" into a fully qualified name. The scope of where it can look for "Foo" is affected by wildcard imports. But that's all done in memory and you almost certainly won't notice such tiny differences in resolution speed unless you have something crazy like thousands of classes in one package.

Other than that, no impact. If you import pack._ and some arbitrary class in pack._ that you don't depend on changes then your file won't have to be recompiled.



来源:https://stackoverflow.com/questions/11291772/is-wildcard-import-bad-in-scala-with-respect-to-incremental-compilation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!