【发布时间】:2018-12-16 04:00:48
【问题描述】:
假设我有一个接口包含 3 个方法,即 m1()、m2()、m3(),我有一个抽象类只包含抽象方法,即 m1()、m2()、m3()。假设这个抽象类或接口将来不会改变。在这种情况下,我应该更喜欢什么,为什么?它们中的任何一个都有更好的性能吗?
【问题讨论】:
-
您在寻找哪种更好的性能?时间?内存使用情况?我问是因为你最适合衡量自己,但考虑一下你现在是否真的需要知道:ericlippert.com/2012/12/17/performance-rant
-
请查看这个帖子:stackoverflow.com/questions/7225205/… 有一些链接和性能测试。普遍的想法是接口需要比抽象类更多的动作来解析被调用的方法。
-
覆盖抽象方法的具体类方法比接口实现更高效。该接口需要通过存根进行额外的跳转,通常只需一条 JMP 指令。很难回头看,一纳秒很难准确地描绘出来。界面的截然不同的设计含义并不使其成为应以性能为指导的任意选择。