问题: 将对象包装到另一个对象内的性能成本是多少?内存和CPU使用率均从直接调用对象增加。包装的性能代码
附加信息: 我正在开发一个框架,它将封装代码以隔离插件与程序的核心实现。这个问题不断涌现在我的脑海中“性能成本是多少”。我知道这不仅仅是直接访问被封装的代码。但是,我似乎无法在网上找到任何可靠来源或数据,以准确显示预期的结果。这是一个问题,因为我正在开发这个项目来替代大约40个项目的实现。因此,当被问及更新期望的开销水平时,我需要有一些数据。
此外,如果有人不确定我的意思是包装的代码。这是一个使用一个接口创建对象的过程,该接口将所有方法调用发送到存储在对象中的对象。这是为了在原始对象不能被修改或改变以包含接口时隐藏对象的实现。以下是我正在谈论的一个例子。
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);
}
}
我也知道JIT在Java和其他优化技术JVM中的作用。我问我可以期望从一个大型项目使用这样的系统开销。正如我在包装或转换插件代码之前所做的一切。这包括可能被称为每秒几千次的方法以及仅调用一次的方法。
我也将在接下来的几天内构建原型来测试性能。我只是寻找一些设计意见,以更好地理解期望。而不是盲目地看我的代码猜测浪费时间。
衡量它,不要作假设。如果JIT决定内联或直接调用包装对象,则性能成本可能为0。 – john16384
正如我所说我知道关于JIT,我没有做出假设。我打算对原型进行测试。我正在寻找的是一些知识来帮助解释我所看到的。这样我就不会做出假设并猜测发生了什么。 – DarkGuardsman
如果包装对象的性能成本是一个问题,那么你最好放弃面向对象编程。这是你在Java中应该担心的最后一件事。 – jaco0646