影子场vs.属性访问器接口第2轮

如果你们还没有注意到Dirk Lemmerman和我之间的(轻松) 对决 ,那么让我快速提及一下我们是如何做到这一点的。 首先,Dirk创建了JavaFX技巧23:“ 为属性保存内存阴影字段 ”,以帮助应用程序开发人员在使用JavaFX属性时节省内存。 令人印象深刻的是,当对象不需要使用JavaFX Property对象时,您可以节省内存。

在查看代码时,我不禁注意到使我疯狂的样板代码,因此我决定制作一个简单的API,同时考虑到Dirk的示例使用的有趣的Shadow Fields模式。 我创建的API(也称为属性访问器接口)包含默认方法,这些方法可以使开发人员轻松实现接口,而无需扩展抽象类来避免Java的单一继承规则。 要查看Property Accessor界面代码,我在此处进行博客介绍。 令我惊讶的是,Dirk创建了另一个博客条目来对这三种方法进行基准测试。 如果您跟上所有乐趣,则以下是到目前为止博客文章的时间顺序。

  1. Dirk Lemmerman 保存属性内存阴影字段
    引入阴影场的概念
  2. JavaFX技巧来节省内存! 属性和可观察物阴影场,作者:Carl Dea
    我试图节省内存并减少样板代码。
  3. 阴影场与属性访问器接口 ,作者:Dirk Temmerman
    一个基准应用程序,用于测试具有属性和字段原始数据类型的对象的三种方法。
  4. 阴影场与属性访问器接口第2轮,卡尔·迪亚(Carl Dea)
    重新访问属性访问器接口以通过集中值映射来减少内存使用。

事实证明,根据上面的文章#3,即使膨胀的对象具有已实例化的属性字段,我的实现也是三个实例中最差的。 因为我匆匆忙忙进入事物,直到上述Dirk的帖子#3才知道这个问题。 好吧,我还没有准备好挥舞白旗 ,除了我还有很多窍门。

接下来,您将看到我为减少Property Accessor接口策略的内存使用所做的工作。 要查看代码更改,请在此处的Github上查看代码。 我所做的唯一更改是集中了包含值的Map。 如您所见,与上面的Dirk的帖子#3相比,内存要低得多。 但是,尽管我没有使用阴影字段击败Dirk的实现,但我的表现还是比标准对象方法稍好。

screen-shot-2016-04-05-at-12-17-03-am

使用集中式映射的更新的Property Accessor Interface实现。

结论

尽管我只是通过从每个对象中删除哈希映射并将所有值集中到单个映射中进行了简单的更改,但是Property Accessor接口仍然没有像影子字段技术那样减少内存。 我可能会探索其他技术,例如弱引用或研究内存映射文件。 我怀疑我是否可以进一步减少工作量,但是我认为相对较小的应用程序可以使用Property Accessor界面快速构建应用程序。 他们(开发人员)可以使用适当的分页来避免出现大量列表。 最后一个想法是创建一个甚至可以减少样板代码的注释。

让我知道你的想法吗? 有什么建议么?

翻译自: https://www.javacodegeeks.com/2016/04/shadow-fields-vs-property-accessor-interface-round-2.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值