如何改善GWT托管模式/编译时间?

时间:2011-08-30 10:51:10

标签: performance gwt hardware

在工作中,我们正在使用一些非常强大的机器:HP Z600,双xeon @ 2.5GHz,8-16GB内存。不幸的是,由于公司政策不合适,我们不得不使用32位XP,所以我用未使用的4GB RAM制作了PAE ramdrive。 现在,临时文件在ramdrive上。我也尝试将整个项目移动到ramdrive,然后移动到SSD,但托管模式启动或编译时间没有明显改善。
然后我运行SysInternals的进程监视器,看看是否有任何瓶颈,任务管理器/硬盘活动导致不可见,但我没有看到任何值得注意的东西 - 除了一些缓冲区溢出,我不明白他们是什么意思。

我可以假设OOMPH启动和GWT编译的性能是相关的,因此我使用编译时间作为各种更改之间的基准。 我在BIOS中激活和停用了超线程和turbo-boost,但是没有看到任何差异。超线程甚至似乎使一切变得更慢,我可以假设16个内核的上下文切换损失高于8个内核。 Turbo-boost似乎没有做任何事情,我可以假设它只能在Win7下工作,我没有成功激活驱动程序。它应该将核心从2.5Ghz增加到2.8Ghz 在NTFS驱动器上停用索引和时间戳,将性能设置从前台更改为后台并返回,使用另一个Eclipse实例 - 无需更改。
对于编译,我尝试指定不同数量的工作程序,更大的内存和一些其他选项。超过两名工人的一切都会增加编译时间。
较旧的惠普机器(XW6600)似乎编译速度更快,可能是因为2.8GHz时钟,但它们的托管模式似乎开始变慢。

总之,内存使用量约为2.6GB,页面文件使用率为零,硬盘驱动器没有发出很多活动信号,CPU活动率<10%(单核心约为50-70%)但计算机似乎仍然在编译或启动OOMPH GWT时,一段时间不做任何事情 好的,现在我已经尝试了我在互联网上发现的所有内容,还有什么我可以尝试的吗?转换到64位Win7会有多大改善(无论如何这将在明年到期)?是否有可以调整的硬件/软件选项?

L.E。:还运行RATT(来自MS的跟踪器),看看是否有任何中断需要太长时间,但一切似乎都是有序的。防病毒没有什么区别。对我的i7手机(2630q)进行了另一个GWT项目的基准测试,而i7的速度提高了大约70%,尽管它的时钟大致相同。

1 个答案:

答案 0 :(得分:9)

在大多数情况下,我遇到了编译速度慢/托管模式刷新的原因是应用程序是以这种方式编写的。

对于编译,有几点需要注意:

  • 不要在类路径中保留未使用的类和模块,如果可能的话删除它们,因为GWT无论如何都要在预编译阶段解析它们
  • 对于GWT-RPC类型的爆炸,这通常是所有问题的原因
  • 非常小心使用接口ContextWithLokup,总是尽量减少扩展ContextWithLookup的接口中使用的方法数量
  • 尝试查看其他一些编译选项,例如distributed compilationsoft permutations或multi-jvm编译(使用系统属性运行编译器 -Dgwt.jjs.permutationWorkerFactory = com.google.gwt .dev.ExternalPermutationWorkerFactory -localWorkers 指定JVM数量)

对于托管模式:

  • 尽可能使用延迟加载。我发现托管模式的最大问题是,我的应用程序正在尝试初始化太多甚至在当前屏幕上都没有使用的类,这可以极大地加速托管模式启动。同样,像RPC类型爆炸这样的东西也会影响托管模式

这就是我所能提供的一切。像ram磁盘这样的东西可以加速像-compileReport这样的东西,因为它可以生成大量的文件。