threejs 影子属性

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

在查看代码时,我不禁注意到使我疯狂的样板代码,因此我决定制作一个简单的API,该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的实现,但是我的表现比标准对象方法要好一些。

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

结论

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

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

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

threejs 影子属性

threejs 影子属性_影子场vs.属性访问器接口第2轮相关推荐

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

    如果你们还没有注意到Dirk Lemmerman和我之间的(轻松) 对决 ,那么让我快速提及一下我们是如何做到这一点的. 首先,Dirk创建了JavaFX技巧23:" 为属性保存内存阴影字段 ...

  2. ssm影城项目_影场与属性访问器界面

    ssm影城项目 卡尔·迪亚(Carl Dea)最近跟踪了我的一篇名为" 保存内存"的博客文章! 为属性使用阴影字段 . 在他的博客中,他建议使用称为"属性访问器" ...

  3. css阴影属性_第三场阴影场与属性访问器接口

    css阴影属性 这是" 影子字段与属性访问器"界面的 第3轮 . 如果您是新手,但不确定要怎么做,请查看我以前的文章或关于开发JavaFX应用程序时节省内存的第一篇文章 . 作为J ...

  4. 第三场阴影场与属性访问器接口

    这是" 影子字段与属性访问器"界面的 第3轮 . 如果您是新手,但不确定要怎么做,请查看我以前的文章或关于开发JavaFX应用程序时节省内存的第一篇文章 . 作为Java开发人员, ...

  5. maya对象属性_了解每粒子属性和每对象属性

    可以将两种类型的属性动态添加到"粒子形状"(particle shape)节点: 每粒子 每对象 每粒子属性允许您分别设定对象的每个粒子的属性值.每对象属性允许您通过单个值整体设定 ...

  6. es搜索热度属性_是不是场吊打局?奥迪A6L对比雷克萨斯ES

    易车导购 前段时间,雷军在红米Note 7的发布会上怒怼友商,认为友商的手机配置低.价格高,和性价比无关,红米Note 7可以在全方位"吊打"友商同级别手机,看完发布会,本人也详细 ...

  7. python通过函数类属性_函数作为类属性的赋值如何成为Python中的一个方法?

    你说得对,这和描述符协议有关.描述符是在Python中如何将receiver对象作为方法的第一个参数来实现的.您可以从here阅读有关Python属性查找的更多详细信息.下面显示了在较低级别上执行a. ...

  8. python魔法属性_查看对象内部属性的名称和值,Python“魔法”属性__dict__的使用...

    我们知道,Python中"一切皆对象",Python是一门真正意义上面向对象的编程语言.因此,如果对对象内部存储结构了解不深入,在学习Python的道路上是没有办法进阶的.今天,我 ...

  9. java 获取bean 属性_获取javaBean的属性名属性值属性类型

    package com.example; import java.lang.reflect.Field; /** * 通用的单据主表 * * @author yi.zhe * @time 2014-9 ...

最新文章

  1. Python编写爬虫编写到Excel中
  2. android studio换主题,为Android Studio换上一副更加好看的主题
  3. 让IE兼容background-size的方法_background-size ie下使用
  4. linux中locate find 与 grep
  5. php 时间函数参考
  6. 字符串-拆分和拼接字符串
  7. 浏览器崩溃_如何在浏览器不崩溃的情况下过滤200万行数据?
  8. 计算机基础知识 pdf答案,计算机基础知识练习 答案版.pdf
  9. .NET使用NPOI读取Word模板并替换关键字并下载
  10. 第一百五十期:Java程序员必备:异常的十个关键知识点
  11. 技术人员转行产品经理读这些书就够了
  12. RESTful JSON Web服务最佳实践
  13. Python入门之PyCharm中目录directory与包package的区别
  14. 一些用xib加载主界面的过程
  15. 如何在 Safari 下载 ZIP 文件后不自动解压?
  16. matlab拟合二元方程,MATLAB拟合方程1
  17. java axis_Java 使用Axis实现WebService实例
  18. 【Excel】两组行数不同数据做二维柱状图
  19. 为你的网站添加一个帅气的IP签名档吧 – 教程附源码
  20. 超水平发挥的秘密:放松的专注

热门文章

  1. P6242-[模板]线段树3【吉司机线段树】
  2. 2021牛客OI赛前集训营-树数树【树上启发式合并,堆】
  3. P4643-[国家集训队]阿狸和桃子的游戏【结论】
  4. 动态规划训练10 [Coloring Brackets CodeForces - 149D]
  5. Eclipse 4.9 正式发布,支持 Java 11
  6. Oracle入门(十四G)之PL / SQL中检索数据
  7. 你真的以为你了解Java的序列化了吗
  8. 漫画算法:无序数组排序后的最大相邻差值
  9. ssh(Spring+Spring mvc+hibernate)——EmpServiceImpl.java
  10. 相邻数字+(正月点灯笼的动态规划2)(递归+DP)---JAVA