当前位置: 首页 > 面试题库 >

实施接口的开销

伍成仁
2023-03-14
问题内容

我的一位同事告诉我,实现接口会带来开销。这是真的?

我不关心微优化;我只想知道其中包含的更详细的信息。


问题答案:

无法抗拒并对其进行了测试,而且看起来几乎没有开销。

参加者有:

Interface IFoo    defining a method
class Foo: IFoo   implements IFoo
class Bar         implements the same method as Foo, but no interface involved

所以我定义

Foo realfoo = new Foo();
IFoo ifoo = new Foo();
Bar bar =  new Bar();

然后调用该方法,该方法执行20个字符串连接,每个变量进行10,000,000次。

realfoo:   723 Milliseconds
ifoo:      732 Milliseconds
bar:       728 Milliseconds

如果该方法不执行任何操作,则实际调用会更加突出。

  realfoo: 48 Milliseconds
  ifoo: 62 Milliseconds
  bar: 49 Milliseconds


 类似资料:
  • 在封装与接口中,private关键字封装了对象的内部成员。经过封装,产品隐藏了内部细节,只提供给用户接口(interface)。 接口是非常有用的概念,可以辅助我们的抽象思考。在现实生活中,当我们想起某个用具的时候,往往想到的是该用具的功能性接口。比如杯子,我们想到加水和喝水的可能性,高于想到杯子的材质和价格。也就是说,一定程度上,用具的接口等同于用具本身。内部细节则在思考过程中被摒弃。 a cu

  • 我已经得到了实现双向链表的框架。我被PushFront()方法难住了。方法应该将提供的元素添加到链表的前面,并且应该将地址返回到新的头节点。我对如何访问列表的当前头部感到困惑,以便我可以将其分配给pNext指针。到目前为止,PushTop()方法看起来是这样的: 元素类构造函数: 数据类: 主要: 我的理解是,您通常会在调用PushFron()时提供头的地址,但是因为我没有提供,我不确定如何访问它

  • 本任务将演示如何使用Istio实现动态流控。 开始之前 根据安装指南中的快速入门指南,在Kubernetes集群中安装Istio。 部署BookInfo示例应用。 初始化应用版本,把直接来自测试用户“Jason”的reviews服务请求路由到v2版本,同时把来自其他用户的请求路由到v3版本。 istioctl create -f samples/bookinfo/kube/route-rule

  • Storm 使用 CGroup 来限制 worker 的资源使用, 以保证公平和 QOS. 请注意:CGroups 目前仅支持 Linux 平台(内核版本 2.6.24 及更高版本) 设置 要使用 CGroups, 请确保正确安装 cgroups 并配置 cgroup.有关设置和配置的更多信息, 请访问: https://access.redhat.com/documentation/en-US/

  • Kubernetes作为云原生应用的基础调度平台,相当于云原生的操作系统,为了便于系统的扩展,Kubernetes中开放的以下接口,可以分别对接不同的后端,来实现自己的业务逻辑: CRI(Container Runtime Interface):容器运行时接口,提供计算资源 CNI(Container Network Interface):容器网络接口,提供网络资源 CSI(Container S

  • 这部分文档包含了 Requests 所有的接口。对于 Requests 依赖的外部库部分,我们在这里介绍最重要的部分,并提供了规范文档的链接。 主要接口 Requests 所有的功能都可以通过以下 7 个方法访问。它们全部都会返回一个 对象的实例。 requests.request(method, url, **kwargs) Constructs and sends a . 参数: method