在我的测试中,在Java中定义的接口上调用函数比使用扩展抽象类(在我的macbook上)要花费200纳米左右的时间来执行。这是预计的开销?抽象类上的Java接口的性能开销
1
A
回答
0
我不太了解Java实现的细节。但是,根据我的经验,使用不同语言的编译器,我认为由于一个类只能扩展一个抽象类,但可以实现多个接口,所以搜索正确方法的过程可能会稍微延长一些,因为还有一些额外的复杂性在支持动态调度所需的数据结构中。所以这个结果并不让我感到意外。
0
我很确定你的基准测试是坏的(因为Java基准测试是pretty hard)。开销必须远远低于200 ns,除非您运行某个历史CPU。
尽管如此,接口有时会稍微慢一点,但事情要复杂得多,你可以在my question中看到。
相关问题
- 1. java中的接口中的抽象类
- 2. 的Java抽象类实现接口
- 3. 使用的Java [接口/抽象类]
- 4. Java:接口和抽象类的实现
- 5. Java接口和抽象类的问题
- 6. 在接口和抽象类的Java
- 7. 抽象类和接口的Java
- 8. Java的抽象接口
- 9. 与抽象类的接口
- 10. 接口中的抽象类?
- 11. 从接口到实现类的铸造性能开销
- 12. 属性,接口或抽象类
- 13. 抽象类和接口在Java中
- 14. Java抽象类,接口,方法覆盖
- 15. 抽象类,类,接口
- 16. Java抽象和接口
- 17. Java抽象和接口
- 18. 在抽象基类上声明接口
- 19. 抽象类返回接口
- 20. 与接口和抽象类
- 21. PHP抽象类和接口
- 22. 抽象类实现接口
- 23. 抽象类V/s接口
- 24. 抽象类或SoftDelete接口
- 25. C#接口和抽象类
- 26. 抽象类MouseAdapter与接口
- 27. 抽象类和接口
- 28. 接口vs 100%抽象类
- 29. 接口与抽象类
- 30. 100%抽象类与接口
你可以发布你的基准代码 –
我怀疑你没有以适当的方式进行基准测试。 – Kon