| Author |
why an abstract class is faster than an interface ?
|
Seetharaman Venkatasamy
Ranch Hand
Joined: Jan 28, 2008
Posts: 5575
|
|
Hi Friends,
I come across *abstract classes may be a tiny bit faster (or they may not.) * in this page [JavaRanch.]
http://faq.javaranch.com/java/InterfaceVsAbstractClass
I want to know the reason for why abstract classes may be a tiny bit faster ?
Thanks.
|
 |
Ernest Friedman-Hill
author and iconoclast
Marshal
Joined: Jul 08, 2003
Posts: 24057
|
|
In Java's early days, there was a technical reason for the difference. Do you know what a "virtual table" or "vtbl" is? Basically, a simple vtbl could be used for directly inherited methods, and so the JVM just had to look at two pointers to find the code for a method inherited from an abstract class -- that's relatively fast. But since any class can implement any number of interfaces, finding the code that implements an interface method would involve following a pointer to a table of interfaces implemented by a class, then searching through the table to find a vtbl for the implementation of that interface, and then finding the method pointer in the table. That's obviously a lot more work, so calling an interface method used to be measurably slower.
These days, JVMs are a lot smarter, and most of this sort of lookup is done during dynamic compilation, so the runtime differences are small or nonexistent.
|
[Jess in Action][AskingGoodQuestions]
|
 |
Seetharaman Venkatasamy
Ranch Hand
Joined: Jan 28, 2008
Posts: 5575
|
|
Thank you very much Ernest for your valuable points!
|
 |
 |
|
|
subject: why an abstract class is faster than an interface ?
|
|
|