FAQ: 我怎么保证我的模型是可伸缩的?

Eclipse官方FAQ翻译系列

FAQ How can I ensure that my model is scalable?

original link : http://wiki.eclipse.org/FAQ_How_can_I_ensure_that_my_model_is_scalable% 3F

 

      由于eScript程序被假定是很小的,我们并没有太在意我们的DOM在内存使用方面的优化。然而,对于其他语言的程序则有越来越大型化的趋势,比如CPascal或者C#,模型每个独立域的定义都必须小心掂量。比如呈现<windows.h>文件(译者注:Win32程序必包含的一个基本头文件,很大),DOM元素就会很容易变得成千甚至上万。

     

      虽然某些性能增强技术可以在你的模型实现中被追加,但最好是从开始就考虑可伸缩性。你的模型的性能的各方面以及构建在其上的工具的性能的各方面应该在系统的体系架构设计时就考虑。特别的,不要让你的API的用户持有到内部大型数据结构对象的引用,这给你的模型提供了最基本的可伸缩性。

 

    当编写一个面对大型系统可以自由伸缩的模型,你必须特别小心你的模型使用的内存量。传统的性能优化技术在这里仍然有用,但延迟加载(lazy loading)和最近最多使用(most recently used: MRU)缓存相对特别有效。必须JDTJava模型,只在元素被访问时才加载。Workspace中的所有Java工程中的Java元素的句柄在任何时刻都不存在于memory中。大多数Java元素实现了可打开(Openable)接口,指示当你调用他们的方法以访问底层结构时,它们是懒加载的(lazily populated)。当不再需要时,所有Openable元素可以被显示的关闭,不过模型(model)维持了一个最近最少使用(least recently used:LRU)缓存,其中是所有已打开元素的引用,模型以此来关闭那些LRU元素(译者注:原文在这里是关闭MRU元素,但我认为应该是LRU,希望大家指正)。即使无法确定客户如何保持到Java元素的引用,Java元素的轻量级抽象层仍允许重型的数据结构被flush(译者注:比如flush到一个磁盘缓存中)。抽象语法树同样依需求而被滞后生成,而一点不再被引用就立刻抛弃(discard

你可能感兴趣的:(FAQ: 我怎么保证我的模型是可伸缩的?)