当前位置:  开发笔记 > 编程语言 > 正文

Java对象分配开销

如何解决《Java对象分配开销》经验,为你挑选了1个好方法。

我在Java中编写一个不可变的DOM树,以简化从多个线程的访问.*

但是,它确实需要尽快支持插入和更新.并且由于它是不可变的,如果我对树的第N级节点进行更改,我需要分配至少N个新节点以返回新树.

我的问题是,每次修改树时预先分配节点而不是创建新节点会快得多吗?这将是很容易做的事情 - 保持几百个未使用的节点池,并拉一出池,而不是创建一个每当被要求修改操作.当没有其他事情发生时,我可以补充节点池.(如果不明显,在这个应用程序中执行时间比堆空间要高得多)

这样做是否值得?关于加速它的任何其他提示?

或者,有人知道一个不可变的DOM库吗?我搜索过,但找不到任何东西.

*注意:对于那些不熟悉不变性概念的人来说,它基本上意味着在对更改它的对象的任何操作中,该方法返回对象的副本,其中包含更改,而不是更改宾语.因此,如果另一个线程仍在读取对象,它将继续愉快地操作"旧"版本,不知道已经进行了更改,而不是崩溃可怕.请参阅http://www.javapractices.com/topic/TopicAction.do?Id=29



1> jodonnell..:

目前,对象创建速度非常快,对象池的概念已经过时(至少在一般情况下;连接池当然仍然有效).

避免过早优化.在复制时需要时创建节点,然后查看它是否变得非常慢.如果是这样,那么请研究一些加速它的技术.但是,除非你已经知道你所拥有的东西还不够快,否则我不会介绍你需要的所有复杂性来进行汇集.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有