小编Ser*_*nos的帖子

在<canvas>中绘制填字游戏网格的最快算法?

我正在渲染一个单元格网格,非常类似于填字游戏中的网格,但使用四种不同的颜色来填充每个单元格(不仅是黑色或白色).

网格大小约为160x120,我需要尽可能快地渲染它,因为它将用于显示细胞自动机动画.

我尝试了两种不同的方法来渲染网格:

  • 使用以下内容渲染每个单元格:

    var w = x + step;
    var h = y + step;
    canvasContext.fillStyle=cell.color;
    canvasContext.fillRect(x+1,y+1,w-1,h-1);
    canvasContext.strokeRect(x,y,w,h);
    
    Run Code Online (Sandbox Code Playgroud)
  • 渲染没有边框的所有单元格,然后使用以下方法渲染网格线:

    var XSteps = Math.floor(width/step);
    canvasContext.fillStyle = gridColor;
    for (var i = 0, len=XSteps; i<len; i++) {
        canvasContext.fillRect(i*step, 0, 1, height);
    }
    //Similar thing for Y coord
    
    Run Code Online (Sandbox Code Playgroud)

两种算法都表现不佳:在两种情况下绘制网格都比单元格慢.我错过了什么吗?我该如何优化这些算法?还有其他方法我应该尝试吗?

注意:网格会移动,因为用户可以移动它或缩放视图.

一般的问题是:在元素上绘制单元格网格的最快算法是什么?

javascript algorithm performance canvas

10
推荐指数
1
解决办法
3325
查看次数

当与Sinon假计时器一起使用时,为什么JSDOM会进入无限循环?

使用最新的JSDOM(11.6.0),当与Sinon的伪计时器一起使用时,我遇到了一个无限循环。

const sinon = require('sinon');

sinon.useFakeTimers();
require('jsdom'); // This line creates an infinite loop
Run Code Online (Sandbox Code Playgroud)

如何避免这种无限循环?

node.js jsdom sinon

4
推荐指数
1
解决办法
243
查看次数

标签 统计

algorithm ×1

canvas ×1

javascript ×1

jsdom ×1

node.js ×1

performance ×1

sinon ×1