問題: 將對象包裝到另一個對象內的性能成本是多少?內存和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