多核和额外内存会在“开发模式”期间最小化GWT构建时间吗?

时间:2011-07-01 21:54:25

标签: eclipse performance gwt

我有兴趣最小化GWT软件开发的每次迭代之间的时间。我的环境是:Eclipse + Google的GWT Eclipse插件+ GWT 2.3 SDK。


多核:

我在GWT开发中浪费的大部分时间(about 90%)在我在开发模式下进行一些代码更改后等待浏览器刷新。 (1。)如果我将开发环境迁移到具有24个内核的大型服务器,那么GWT的“开发模式”是否有办法利用额外的内核?

内存:

'大服务器'也有32 GB的内存,我知道你可以通过修改'-Xmx512m'来为GWT的运行配置分配更多的内存来指定更多的内存。 (2。)通过'-Xmx'命令行开关分配更多内存会加快刷新时间吗?

(3。)构建问题1和问题2的另一种方法是问:“开发模式”期间刷新时间的瓶颈是什么?


(不太重要(因为我没有完全编译通常称为90/10 rule):“GWT编译”是否会从更多内核中受益?“GWT编译”会从更多内存中受益吗?)

4 个答案:

答案 0 :(得分:3)

  

我在开发模式中进行了一些代码更改后,在GWT开发中浪费了等待浏览器刷新

资源将有所帮助,但是什么将有助于更多优化代码并使其更精简。减少膨胀,减少脚本,减少垃圾。

这不是关于编译器,更多是关于确保页面加载速度快。

更多缓存,更多延迟加载,更多资源缩减。

答案 1 :(得分:2)

这是关于SO的常见问题,请参阅旧的'09 thread here

以下是我去年在大型企业GWT项目中学到的知识:

  • GWT将使用所有核心,除非你告诉它不要通过 -localWorkers (N-1很好,如果你可以省力的话)。
  • GWT喜欢I / O,我的8GB / 4核心/ SSD盒子上有5s的项目。
  • 以开发模式(a.k.a.托管模式)运行可节省大量时间。只需在浏览器中点击F5即可。
  • 启用 -draftCompile 标志,不要针对开发版进行优化。

但最重要的是 - 不构建您不需要构建的内容

确保您仅使用所需的排列(user.agent)。我的公司只支持FF,所以这意味着只构建1个排列而不是6个。如果你需要超过1,你也可以collapse permutations

当我们有一堆小部件或模块正在处理时,我们将它们放入GWT库模块并使用Maven单独构建它们。如果你这样做,那么你就可以在他们身上花费时间而不是花时间在每次刷新时构建整个项目,而只是当前模块的重要项目。

答案 2 :(得分:1)

我不确定托管模式是否会受益于更多内核。 GWT 2.4承诺对托管模式有很大的performance boost,而SSD肯定会有所帮助......

答案 3 :(得分:1)

从双Pentium-D升级到quad core2并使用gigaglobs内存后,我的编译时间大大减少了。好像从10分钟到3分钟,有趣地说。

我也转而在linux上运行Eclipse,我确实看到了eclipse明显的响应改进。我使用的是ubuntu 64bit。

而不是firefox或者说,我使用谷歌浏览器,而且我表面上看起来铬的反应更好。

如果没有任何技术内幕知识,我会说核心的数量确实有帮助,但只能达到一定数量的核心。我猜测的原因是你拥有的内核越多,操作系统任务就会让更多内核空闲,以满足您的开发需求。只有两个核心,eclipse jvm将与操作系统和浏览器竞争。

浏览器本身与操作系统的多任务和多核并行性紧密相关。因此,拥有更多内核将有助于托管模式调试。

但是在内核和内存增加了一定数量之后,如果你是该机器的唯一用户,你不应再从内核和内存数量的进一步增加中获益,因为多余的内核和内存不会更长时间可以被jvm或OS使用。

再次传闻,你的操作系统有两个内核,你可以打开多少核心,而你的jvm就是一个核心。

让我们说你

  • 正在hulu上观看一个标签上的battlestar gallactica = 2个核心(一个用于浏览器,一个用于闪存)
  • 在一个标签上观看AAPL和GOOG的股价= 2个核心(一个用于浏览器,一个用于闪存)
  • 加上2个用于操作系统任务的核心
  • 加上托管模式标签的2个核心
  • 为你的eclipse jvm加上1个核心。

因此,最糟糕的情况是拥有9个核心,超过这个核心,你不应该从核心数量的增加中获益。对于上面的每个任务,传闻上分配1GB的物理内存。因此,对于上述情况,任何超过6 GB的内存增加都无济于事。

QED - 非正式地说。有趣的是,我的意思是。