2014-04-16 22 views
1

在我的测试中,在Java中定义的接口上调用函数比使用扩展抽象类(在我的macbook上)要花费200纳米左右的时间来执行。这是预计的开销?抽象类上的Java接口的性能开销

+4

你可以发布你的基准代码 –

+3

我怀疑你没有以适当的方式进行基准测试。 – Kon

回答

0

我不太了解Java实现的细节。但是,根据我的经验,使用不同语言的编译器,我认为由于一个类只能扩展一个抽象类,但可以实现多个接口,所以搜索正确方法的过程可能会稍微延长一些,因为还有一些额外的复杂性在支持动态调度所需的数据结构中。所以这个结果并不让我感到意外。

0

我很确定你的基准测试是坏的(因为Java基准测试是pretty hard)。开销必须远远低于200 ns,除非您运行某个历史CPU。

尽管如此,接口有时会稍微慢一点,但事情要复杂得多,你可以在my question中看到。