Abstract Class和Interface
呵呵,这个问题可能大部分人从来不会想到,这里要说的不是谁好谁坏,也不是设计,而是性能问题。
今天一个同事问我,听说Interface有性能问题,比Abstract Class慢很多,知道怎么回事吗?我以前从来没有听说过,后来google了下,还真的发现有人讨论这个:Interface VS Abstract class
结论是Interface比Abstract Class慢很多,原因是调用Interface方法的指令是invokeinterface,而调用Abstract Class的方法指令是invokevirtual,而在调用invokeinterface时的真正的参数多一个参数指定参数数量,呵呵,这个小小的区别导致两个指令可能有10倍以上的差别。至于详细的区别,大家也可以看这个帖子。另外这个文章说的更加全面,比较了四个invokeXxx指令的性能以及字节码,结论是:静态方法调用最快,而通过接口调用方法最慢(比invokevirtual慢了3-4倍),调用private的方法比调用一般的方法稍快。
作者: Cherami
原载: Abstract Class和Interface
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
日志评价
相关日志
随机日志
添加到网摘
[del.icio.us] [新浪 VIVI] [365key] [YouNote] [博采中心] [Poco] [SOHU狐摘] [天极网摘] [和讯网摘]喜欢这个插件?

暂时没有评论
发表评论 | RSS订阅 | 反向链接