GWT定时器性能

时间:2012-10-25 11:34:33

标签: java javascript gwt

我有这个javascript代码,我已经在我的应用程序中嵌入了JSNI:

    var i=0;
    setInterval(function(){
      data.push(Math.cos(i++/25) - 0.2 + Math.random()*0.3);
      waveform.update({
        data: data
      });
    }, 50);

但是,我想使用纯GWT并尝试使用此代码:

    new Timer() {
        private long i = 0;
        public void run() {
              long value = (long) ((Math.cos(i++/25) - 0.2 + Math.random() * 0.3)); 
              updateData(value); // just a wrapper for the javascript function above
        }
      }.scheduleRepeating(50);

当我运行我的应用程序时,GWT计时器非常“滞后”,而且与JSNI函数相比,我几乎无法在UI中输入TextBox。我的代码中的数学函数有问题,或Timer只是慢吗?

1 个答案:

答案 0 :(得分:2)

首先确保您没有在开发模式下运行GWT代码,但实际上是在构建和部署应用程序。开发模式可以将您的Java代码实时转换为Javascript,以便进行热部署/实时修改,因此速度非常慢。

还尝试在GWT编译器上使用“pretty”参数,以便它生成非混淆的Javascript,然后检查GWT如何将Java代码转换为JS,也许那里存在问题。