多核和额外的内存是否会最大限度地减少"development mode"期间的 GWT 构建时间?



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


多芯:

我在GWT开发中浪费的大部分时间(约90%)都是在开发模式中更改了一些代码后等待浏览器刷新(1.)如果我把我的开发环境迁移到一个有24个核心的大型服务器上,GWT的"开发模式"有办法利用额外的核心吗

内存:

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

(3.)构建问题1和问题2的另一种方法是问:在"开发模式"期间,刷新时间的瓶颈是什么


(不太重要(因为我不经常进行完全编译,也就是90/10规则):"GWT编译"是否受益于更多的内核?"GWTCompile"是否受益于更多的内存?)

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

资源会有所帮助,但会有助于更优化代码并使其更精简。更少的膨胀,更少的脚本,更少的垃圾。

这与编译器无关,更重要的是确保页面加载速度快。

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

这是SO上的一个常见问题,请参阅此处的旧'09线程。

以下是我去年在处理大型企业GWT项目时学到的东西:

  • GWT将使用所有核心,除非您告诉它不要通过-localWorkers(如果您能腾出N-1,它就很好了)
  • GWT喜欢I/O,我有一些项目是在我的8GB/4核/SSD盒子上用5s构建的
  • 在开发模式(也称为托管模式)下运行可以节省大量时间。只需在浏览器中点击F5即可
  • 启用-draftCompile标志,并且不针对开发构建进行优化

但最重要的是-不要构建不需要构建的东西!

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

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

我不确定托管模式是否会从更多的核心中受益。GWT2.4承诺将显著提高托管模式的性能,SSD肯定会有所帮助。。。

在我从双pentium-D升级到quad-core2并拥有千兆字节内存后,我的编译时间显著缩短。就像从10分钟到3分钟,讲轶事。

我也开始在linux上运行Eclipse,我确实看到了Eclipse显著的响应改进。我使用的是ubuntu 64位。

我用的不是firefox或ie,而是谷歌chrome,我表面上感觉chrome的响应更好。

在没有任何技术内幕知识的情况下,我会说核心的数量确实有帮助,但只有一定数量的核心。我猜测的原因是,你拥有的内核越多,操作系统任务就会让更多的内核闲置,以满足你的开发乐趣。如果只有两个内核,eclipsejvm将与操作系统和浏览器竞争。

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

但是,在内核和内存数量增加一定数量后,如果您是机器的唯一用户,您就不应该再从内核和内存的进一步增加中获得任何好处,因为jvm或操作系统将不再使用多余的内核和内存。

再说一遍,2个内核用于操作系统,与打开的超活动chrome选项卡的数量一样多的内核,以及一个内核用于jvm。

假设你是

  • 正在hulu上观看战列星gallactica,一个标签=2个核心(一个用于浏览器,一个用于闪存)
  • 正在一个选项卡上观察AAPL和GOOG的股价=2个核心(一个用于浏览器,一个用于闪存)
  • 外加2个内核用于操作系统任务
  • 加上2个核心,用于您的托管模式选项卡
  • 再加上eclipse jvm的1个核心

因此,更糟糕的情况是拥有9个核心,超过9个核心后,您就不会从核心数量的增加中获得任何好处。对于上面的每项任务,都要分配1GB的物理内存。因此,对于上述情况,内存增加到6 GB以上都无济于事。

QED——即兴演讲。有趣的是,我的意思是。