Dheeraj Joshi
Dheeraj Joshi

Reputation: 3147

Do unused import and objects have a performance impact?

Do the unused imports and unused objects in Java code create any performance impact?

Suppose an object is initialized and never used, what happens? And what is the cost of unused imports?

Upvotes: 95

Views: 33109

Answers (6)

Delark
Delark

Reputation: 1323

I think this being a common question is a consequence of the inherent problem of any programming language.

Syntax DOES NOT allow for a precise interpretation of what the machine is doing.

Any system is composed of 2 sides: the "real" and the "blueprint".

And it is extremely common to code in function of the "abstract"/"blueprint".

import Database;
class MyPojo {

   int intField;

   public static class Manager {

      final MyPojo instance;

      public Manager(Database db) {
         instance = db.getMyPojo();
      }

   }

}

This will allow to easily find any MyPojo related functionality. So I don't know how academia defines a distinction between both but, anything "real", involves memory allocation, reference/pointer manipulation, race conditions... etc...

These two perspectives of a system are completely different, yet the two of them are expressed in the same syntactical 2-dimensional plane... Words.

And it is not fair to either of them, a blueprint in architecture requires 2 dimensions, but the real must be handled on site.

The same way it becomes increasingly difficult to handle complex systems with just a 2 dimensional syntax, that even if IDE's try to help us with hyperlinks, it becomes an issue that could be handled easily in a 3 dimensional plane.

I believe the problem relies in how the language evolved from a pure OOP paradigm to a functional reactive one, where immutability now allows the defining of "nuclear" datatypes... Maybe all we always needed were arrays[]...

Upvotes: 0

Ossama Boughaba
Ossama Boughaba

Reputation: 211

While impact in compilation is minimal, the impact in deployment can be bad. I've just come across an unused import that required a separate library which became a maven dependency. A further transitive dependency problem was fortunately not found, but the .war file was thicker for no reason. Add to that a superfluous jar in the webapp classloader.

Upvotes: 9

asem shawkey
asem shawkey

Reputation: 21

Though unused imports in Java file do not create any harm, it unnecessarily increases the length and size of the Java source file.

Upvotes: 1

Neeraj
Neeraj

Reputation: 167

Yes it impact a bit on performance, if we are referring unused import statement in our java class. The Java compiler will check for references mentioned into the import statement and at minute level it impact on the performance of the your class.

Thanks

Upvotes: 0

Frankline
Frankline

Reputation: 41025

Unused imports have no performance impact at runtime. It is purely a namespace mechanism. Nonetheless, you should always import only what you need for readability and avoid namespace collisions which are a nuisance.

Apart from code readability and hence maintainability of code, there may be faster compilation of java code (however, unnoticeable) by tidying up imports, but runtime performance is not impacted, since byte code generated is not impacted by untidy imports. Byte code generated remains the same.

Upvotes: 33

Peter Lawrey
Peter Lawrey

Reputation: 533720

Its a very common question.

Like most performance questions the best approach is to write the clearest and simplest code you can as this improves the maintainability of the code and helps ensure it performs reasonably well even after it is changed. (Clever/Obtuse/Needlessly Verbose code can run fast to start with but as it is changed by mere mortals it can get much slower)

Unused imports have a trivial impact on the compiler, but there are no imports in the byte code or at runtime.

Unused objects can be optimised away, but its best to avoid these as they almost always cause some performance impact, but more importantly make reading and maintaining your code more difficult.

Upvotes: 86

Related Questions