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