JavaScript在特定计算机上运行速度很慢

时间:2017-07-07 21:59:15

标签: javascript

我编写的代码采用Black&白色图像并检查特定区域(具有方形)的像素,并最终返回其中有多少是黑色的总和,该区域的每个像素都在For循环中读取,如下一个示例所示:

   function my_isblack(x,y){
        var p = ctx.getImageData(x, y, 1, 1).data;
        if(p[0]<50 && p[1]<50 && p[2]<50){
            return 1;
        }
        else{
            return 0;
        }
    }

正如你在for循环中看到的那样,我调用一个函数来验证特定像素是否相当黑:

for i in range(0,25000):
    Wres[:,i] = np.matmul(W[:,:,i],res[:,i])

你可以想象,这有点计算成本。但问题是,对于我的电脑,它突然变得比其他人慢得多(即使是最糟糕的处理器)。我已经检查了RAM内存和处理器,并且它们都没有使用超过30%,并且运行代码之前的处理器接近0%。

不知道还有什么地方可以看。我很感激一些帮助,如果有人知道如何更快地做到这一点,那将是非常苛刻的

1 个答案:

答案 0 :(得分:0)

按照@ASDFGerte的建议,我会尝试拨打getImageData

var x=10; var y=10; var width=50; var height=50;
var counter=0;
var image;
var p;   //global data

function init(){
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.fillStyle = "black";
    ctx.fillRect(10, 10, 50, 50);      //this is just a black square

    image = ctx.getImageData(x, y, width, height);      //Load the image
    p = image.data;                                     //get the data of the image
    is_box_black_corner();
};

function is_box_black_corner(){
    for (var i=x; i<(x+width); i++){
        for (var j=y; j<(y+height); j++){
            if(my_isblack(i,j)==1){
            counter++;
            }
        }
    }
    console.log(counter);
}; 

function my_isblack(x,y){
    if(p[0]<50 && p[1]<50 && p[2]<50){  //check the global data
        return 1;
    }
    else{
        return 0;
    }
};