複数のスレッドからのアクセスを簡素化するために、Javaで不変のDOMツリーを作成しています。*
ただし、可能な限り高速に挿入と更新をサポートする必要があります。また、不変であるため、ツリーのN番目のレベルのノードに変更を加えた場合、新しいツリーを返すには、少なくともN個の新しいノードを割り当てる必要があります。
私の質問は、ツリーが変更されるたびに新しいノードを作成するよりも、ノードを事前に割り当てる方が劇的に速いでしょうか?実行するのはかなり簡単です。数百の未使用ノードのプールを保持し、変更操作に必要なときにノードを作成するのではなく、プールから1つプルします。他に何も起こっていないときにノードプールを補充できます。(明らかでない場合は、このアプリケーションでは、ヒープスペースよりも実行時間がはるかに長くなります)
これを行う価値はありますか?それをスピードアップするための他のヒントはありますか?
あるいは、不変のDOMライブラリがすでにあるかどうか誰かが知っていますか?検索しましたが、何も見つかりませんでした。
*注:不変性の概念に精通していない場合は、基本的に、オブジェクトを変更する操作で、メソッドが変更されたオブジェクトではなく、変更されたオブジェクトのコピーを返すことを意味します物体。したがって、別のスレッドがまだオブジェクトを読み取っている場合、ひどくクラッシュするのではなく、変更が加えられたことに気付かずに、「古い」バージョンで問題なく動作し続けます。http://www.javapractices.com/topic/TopicAction.do?Id=29を参照してください