快速业务通道

用Runtime Syp调整Eclipse的启动性能,第2部分 - 成功的骗局 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
位于处理 org.eclipse.ui.actionSets 扩展点的同一个插件中(Workbench UI 插件), 也不位于它的先决插件中。那么,当它看起来不取决于插件的 classpath 时, Workbench UI 插件如何去创建这个类的一个实例呢?

插件的类加载器 (classloader) 负责在它的库中解析对类的引用。类加载器 将插件引用映射到它们相应的包含有插件类的 JAR 文件,比如我们的例子, SampleAction 。因此,Workbench UI 插件不必“知道”通过属性引用的类,比 如 <action> 标签的 class 。相反,是由于“Hello Eclipse”插件定义 了对 Workbench UI 插件的依赖而使之可以访问目标插件的类,因而有权通过目 标插件的类加载器访问 Hello Eclipse 的类。简洁地重述一遍,当 Eclipse 找 不到某个类时,它会要求目标插件的类加载器去加载那个类;那就是 createExecutableExtension 方法所做的事情。

用Runtime Syp调整Eclipse的启动性能,第2部分 - 成功的骗局(6)

时间:2010-12-02 IBM Dan Kehn

避免与扩展点处理相关的过早的插件激活

回到图 8 中所示的栈记录,我们可以发现,在所选择的文本中部的代码通过 调用 createExecutableExtension 对扩展贡献进行处理 —— 看吧! 插件开始 加载了。我们现在要寻觅的是明摆着的问题的答案:这时需要加载它吗?可以将 它的加载向后延迟吗?

实际上所有会激活另一个插件的类最终都可以追溯到对 createExecutableExtension 方法的调用。这些调用的调用参数指明了属性名( 通常是 “ class ”)和它的值,即要加载的类的全名。这就带我们回到了导致 激活(此插件)的插件扩展贡献,在我们的例子中也就是 subuilder 插件。清 单 2 是它的清单的摘录。

清单 2. Subuilder plugin.xml 摘录

<extension point =  "com.ibm.etools.rsc.sp">    <sp      id = "com.ibm.etools.subuilder.sp.NewSQLSPAction"     name="%STR_NEWWIZARD_SQLSP"     group ="SPFolderAction.New"     view = "datadef"     class="com.ibm.etools.subuilder.actions.create.NewSQLSPAction"/>   </extension>

就参数而言,这个扩展贡献看起来类似于用来定义菜单选项贡献的 org.eclipse.ui.popupmenu 扩展点;更确切地说,它定义了一个标签(属性 “name”),位置(属性“group”),目标(属性“view”),还有最特别的 ,处理程序(属性 “class”)。Eclipse 扩展与这个特殊实现的区别是, Eclipse 的扩展创建一个委派类作为菜单选项的代理。直到菜单选项真正被选择 时,相应的处理程序类才会被创建,因而延迟了包含此处理器类的插件的激活。将同样的代理策略应用到前面的例子中,J2EE 透视图的打开快了差不多 7 秒。创建 NewSQLSPAction 实例和激活包含它引用的类的插件的开销并没有消除,而 是改变为随取随付 (pay-as-you-go)。

结束语

现在您应该知道为什么本文的子标题定为“成功的骗局”了。这完全是为了 满足用户的期望,并让用户不去理会您希望他们不要去注意的东西。在这个特例 中,现在启动更快了,但是稍后如果用户启用数据库工具,他们还要是付出同样 多的 CPU 开销。那是可以接受的,因为开销是以化整为零的方式付出,而且, 更重要的是,它使延迟更接近用户期望付出代价的相关动作。

记住,目标是 尽可能延迟代码的执行,不仅因为它可以带来感觉上性能的提 高,还因为最容易用于优化速度的代码是永远不执行的代码。Eclipse 的插件体 系结构让您可以容易地创建达成此目的的扩展,Runtime Spy 帮助

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号