Javascript Firefox上的HTML5画布比Chrome更快!为什么?

Javascript Firefox上的HTML5画布比Chrome更快!为什么?,javascript,html,google-chrome,canvas,Javascript,Html,Google Chrome,Canvas,我发现这段代码是在画布上绘制的。在firefox中,它运行良好,但在最新的Chrome中,性能却有所欠缺。如果鼠标移动得非常快,则在Chrome中的光标后面绘制一条线。为什么? 在每个浏览器中执行javascript的速度不同,因此它可以在firefox中更好地运行。这也取决于你自己的电脑性能 with语句也会减慢执行速度 这是因为with()在上述范围链的开头追加了一组额外的变量。这个额外的项意味着,无论何时调用任何变量,Javascript引擎都必须先循环with()变量,然后循环局部变量

我发现这段代码是在画布上绘制的。在firefox中,它运行良好,但在最新的Chrome中,性能却有所欠缺。如果鼠标移动得非常快,则在Chrome中的光标后面绘制一条线。为什么?


在每个浏览器中执行javascript的速度不同,因此它可以在firefox中更好地运行。这也取决于你自己的电脑性能

with
语句也会减慢执行速度

这是因为with()在上述范围链的开头追加了一组额外的变量。这个额外的项意味着,无论何时调用任何变量,Javascript引擎都必须先循环with()变量,然后循环局部变量,然后循环全局变量

因此with()本质上为局部变量提供了全局变量的所有性能缺陷,从而破坏了Javascript优化


这就是为什么不将
解释一起使用的原因,来源于

我似乎没有和你一样的问题。也许你电脑的力量与此有关?但如果我的电脑速度慢,为什么它在firefox中工作?在最新的Chrome上对我来说很好。一个插件或类似的东西可能会减慢速度。例如,fps仪表对性能有很坏的影响(似乎会产生一些垃圾,需要太多的绘图时间)。我停用了所有插件,但它仍然不起作用。感谢您的建议,但它不会改变性能。我想为chrome开发,我能做什么?这一个在两个方面都很好:@Dennis抱歉,我的意思是,在我更正了示例代码后,性能仍然很差,相扑颜料是用flash编码的,这在这类东西上通常更快。总之,HTML5是在flash后面?Chrome比FireFox更糟糕?我不会做出这样的结论。我只想说他们都有正反两面。
  var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');
    var width  = window.innerWidth;
    var height = window.innerHeight;
    canvas.height = height;
    canvas.width = width;
    canvas.addEventListener('mousedown', function(e) {
        this.down = true;   
        this.X = e.pageX ;
        this.Y = e.pageY ;
        this.color = rgb();
    }, 0);
    canvas.addEventListener('mouseup', function() {
        this.down = false;          
    }, 0);
    canvas.addEventListener('mousemove', function(e) {

        if(this.down) {
             with(ctx) {
                beginPath();
                moveTo(this.X, this.Y);
                lineTo(e.pageX , e.pageY );
                strokeStyle = "rgb(0,0,0)";
                ctx.lineWidth=3;
                stroke();
             }
             this.X = e.pageX ;
             this.Y = e.pageY ;
        }
    }, 0);