In Actionscript 3, is there any reel overhead between importing a full package versus importing independant classes?
E.g.: import flash.display.* vs. import flash.display.Sprite
I know it’s a good practice to import only the needed classes from a package to avoid conflicts, but I’ve often been told it also has a cost in term of the compiled file size if I import full packages in many different classes that only use some of the classes from those packages.
I wonder if one class will be imported once for all for the whole project, or if imports are multiplied among the classes that use them.
Resulting compiled file size and runtime performance are two different aspects this question embraces.
The only hit should be compile time, but rday writes that there is apperently a small hit. But that should be something that Adobe will fix in the future.
The import statements should not really be looked on as actual imports, it is merely a way for the compiler to know which classes you are refering to.
eg. If you made you own
Pointclass and it was being used in another package, the compiler needs to know if you are refering to your ownPointclass or the AdobePointclass.The alternative would be to write the fully qualified name evertime you refered to a class.
eg.
var mySprite:flash.display.Sprite = new flash.display.Sprite();As pointed out by Juan Pablo Califano in the comment, this does not actually work with the compiler (though I think it might work with AS2). I merely meant to point out why we have import statement to begin with.
In any case it should not effect the compiled file if you import a whole package (though it apperently does). It will how ever effect compile time, since you are giving the compiler more stuff it needs to look through.
As for “importing” the same class more than once. It will not make a difference. The compiler will only include the same class once. Else the compiled file size would quickly spin out of control, since most classes refer to many classes which again refer to others etc. But again, Adobe might have optimizing to do there.
Bottom line is you should only import the stuff you need, there is no real advantage to importing a whole package. Just use a proper coding tool like FlashDevelop (it is free) and you do not even have to write the import statements yourself.
On a side note, if you are compiling a library (where a class not refered to are also included), im not sure if importing a external package might include that in you compiled file. That might have an actual impact; though hopefully Adobe did not screw up there 😉