gpt4 book ai didi

java - 包装性能代码

转载 作者:行者123 更新时间:2023-11-30 06:53:00 24 4
gpt4 key购买 nike

问题:将一个对象包装在另一个对象内的性能成本是多少?直接调用对象会增加 RAM 和 CPU 使用率。

额外详细信息:我正在开发一个框架,该框架将包装代码以将插件与程序的核心实现隔离开来。我的脑海中不断出现这个问题“性能成本是多少”。我知道这不仅仅是直接访问正在包装的代码。然而,我似乎无法在网上找到任何可靠的来源或数据来准确显示预期的结果。这是一个问题,因为我正在开发它来替换大约 40 个项目的实现。因此,当被问及更新中预计的开销水平时,我需要一些数据。

另外,如果有人不确定我所说的包装代码是什么意思。它是使用接口(interface)创建对象的过程,该接口(interface)将所有方法调用发送到存储在对象中的对象。这样做是为了当原始对象无法修改或更改以包含接口(interface)时隐藏对象的实现。下面是我正在讨论的示例。

public class WrapperObject implements WrapperInterface
{
private SomeObjectClass theObject;

public WrapperObject(SomeObjectClass theObject)
{
this.theObject = theObject;
}

public void method1()
{
theObject.method1();
}

public void method2()
{
theObject.method2("someData", 1);
}
}

我也了解 Java 中的 JIT 以及 JVM 的其他优化技术。我问的是,在大型项目中使用这样的系统的开销可以带来什么。因为我将在到达插件代码之前包装或转换几乎所有内容。这包括每秒可能调用几千次的方法以及仅调用一次的方法。

我还将在接下来的几天内构建原型(prototype)来测试性能。我只是在寻找一些设计输入以更好地理解预期的结果。而不是盲目地看着我的代码进行猜测,浪费时间。

最佳答案

很难估计性能/CPU 消耗,因为它实际上取决于您将如何处理这些对象以及如何处理它们。但您可以相对较好地测量 RAM 消耗。

无需详细说明,您可以将物体的大小测量为以下各项的总和

  • header 大小(对于 64 位 JDK,16 字节)
  • 原始成员的大小(在 the documentation 中查找大小)
  • 引用成员的大小(对于 64 位 JDK,8 字节)
  • 偏移量大小(用于均衡的几个字节)

您的特定对象将具有 header 、一个引用和偏移量。

请注意,这是近似值,确切的大小取决于许多其他因素,但它将帮助您想象将消耗多少内存。

有关不同类型尺寸的更多详细信息,请查看 on this question

关于java - 包装性能代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42390966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com