【发布时间】:2018-03-01 16:59:35
【问题描述】:
我对某种设计模式很感兴趣,它可以让我以尽可能少的 CPU 和内存开销从任何树节点快速访问树根。
现在,重复显而易见的解决方案,并解释为什么它们不适用:
沿着树向下直到找到根 - 这是我目前正在做的事情,但是由于树可以变得非常深并且根访问非常频繁,这不是一个理想的解决方案,即使减轻尽可能多地缓存和重用根目录的开销
在每个节点中存储根节点指针 - 非常快,但会增加大量内存开销,因为树很大
现在,如果只有一棵树,我可以使用单例、静态类成员或任何类似的方法,但是应用程序有不止一棵树,每棵树都代表一个打开的项目。
在诉诸根目录之前,我的设计一次只涉及一个活动项目,所以我可以假设如果发生任何用户活动,它将针对活动项目,即是获取特定对象的根项的一种非常有效的方法。
但是现在我有一个多窗口应用程序,其中每个窗口可以有一个不同的活动项目,以及可以触发项目内的活动的项目间通信,该项目当前在任何编辑器窗口中都不活动。所以不再可能使用“活动项目指针”的方式。
似乎我已经用尽了所有选项,但可能有一些花哨的设计模式可以给我一个很好的折衷方案?
【问题讨论】:
标签: performance design-patterns tree root memory-efficient