影子场vs.属性访问器接口第2轮
如果你們還沒有注意到Dirk Lemmerman和我之間的(輕松) 對決 ,那么讓我快速提及一下我們是如何做到這一點的。 首先,Dirk創建了JavaFX技巧23:“ 為屬性保存內存陰影字段 ”,以幫助應用程序開發人員在使用JavaFX屬性時節省內存。 令人印象深刻的是,當對象不需要使用JavaFX Property對象時,您可以節省內存。
在查看代碼時,我不禁注意到使我瘋狂的樣板代碼,因此我決定制作一個簡單的API,同時考慮到Dirk的示例使用的有趣的Shadow Fields模式。 我創建的API(也稱為屬性訪問器接口)包含默認方法,這些方法可以使開發人員輕松實現接口,而無需擴展抽象類來避免Java的單一繼承規則。 要查看Property Accessor界面代碼,我在此處進行博客介紹。 令我驚訝的是,Dirk創建了另一個博客條目來對這三種方法進行基準測試。 如果您跟上所有樂趣,則以下是到目前為止博客文章的時間順序。
引入陰影場的概念
我試圖節省內存并減少樣板代碼。
一個基準應用程序,用于測試具有屬性和字段原始數據類型的對象的三種方法。
重新訪問屬性訪問器接口以通過集中值映射來減少內存使用。
事實證明,根據上面的文章#3,即使膨脹的對象具有已實例化的屬性字段,我的實現也是三個實例中最差的。 因為我匆匆忙忙進入事物,直到上述Dirk的帖子#3才知道這個問題。 好吧,我還沒有準備好揮舞白旗 ,除了我還有很多竅門。
接下來,您將看到我為減少Property Accessor接口策略的內存使用所做的工作。 要查看代碼更改,請在此處的Github上查看代碼。 我所做的唯一更改是集中了包含值的Map。 如您所見,與上面的Dirk的帖子#3相比,內存要低得多。 但是,盡管我沒有使用陰影字段擊敗Dirk的實現,但我的表現還是比標準對象方法稍好。
使用集中式映射的更新的Property Accessor Interface實現。
結論
盡管我只是通過從每個對象中刪除哈希映射并將所有值集中到單個映射中進行了簡單的更改,但是Property Accessor接口仍然沒有像影子字段技術那樣減少內存。 我可能會探索其他技術,例如弱引用或研究內存映射文件。 我懷疑我是否可以進一步減少工作量,但是我認為相對較小的應用程序可以使用Property Accessor界面快速構建應用程序。 他們(開發人員)可以使用適當的分頁來避免出現大量列表。 最后一個想法是創建一個甚至可以減少樣板代碼的注釋。
讓我知道你的想法嗎? 有什么建議么?
翻譯自: https://www.javacodegeeks.com/2016/04/shadow-fields-vs-property-accessor-interface-round-2.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的影子场vs.属性访问器接口第2轮的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Apache Drill REST
- 下一篇: 惠州房子备案价查询惠民之家(惠州房子备案