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