Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript在特定计算机上运行速度非常慢_Javascript - Fatal编程技术网

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

JavaScript在特定计算机上运行速度非常慢,javascript,Javascript,我编写了一个代码,获取黑白图像,检查特定区域(正方形)中的像素,最后返回其中有多少是黑色的,该区域的每个像素在For循环中读取,如下一个示例: function is_box_black_corner(x,y,width,heigth){ var counter=0; for (var i=x; i<(x+width); i++){ for (var j=y; j<(y+heigth); j++){ if(my_isbl

我编写了一个代码,获取黑白图像,检查特定区域(正方形)中的像素,最后返回其中有多少是黑色的,该区域的每个像素在For循环中读取,如下一个示例:

    function is_box_black_corner(x,y,width,heigth){
    var counter=0;
    for (var i=x; i<(x+width); i++){
        for (var j=y; j<(y+heigth); j++){
            if(my_isblack(i,j)==1){
                counter++;
            }
        }
    }
函数为“长方体”黑色“角(x、y、宽度、高度){
var计数器=0;

对于(var i=x;i我将尝试调用@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;
    }
};
var x=10;var y=10;var宽度=50;var高度=50;
var计数器=0;
var图像;
var p;//全局数据
函数init(){
var c=document.getElementById(“myCanvas”);
var ctx=c.getContext(“2d”);
ctx.fillStyle=“黑色”;
fillRect(10,10,50,50);//这只是一个黑色正方形
image=ctx.getImageData(x,y,宽度,高度);//加载图像
p=image.data;//获取图像的数据
盒子是黑色的吗;
};
函数是\u box\u black\u corner(){

对于(var i=x;i我将尝试调用@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;
    }
};
var x=10;var y=10;var宽度=50;var高度=50;
var计数器=0;
var图像;
var p;//全局数据
函数init(){
var c=document.getElementById(“myCanvas”);
var ctx=c.getContext(“2d”);
ctx.fillStyle=“黑色”;
fillRect(10,10,50,50);//这只是一个黑色正方形
image=ctx.getImageData(x,y,宽度,高度);//加载图像
p=image.data;//获取图像的数据
盒子是黑色的吗;
};
函数是\u box\u black\u corner(){

对于(var i=x;当图像始终相同时,为每个像素调用
getImageData
似乎是不必要的。不确定画布是否有一些优化,但值得怀疑。这与计算机之间的差异无关。您是否在每台计算机上使用相同的浏览器?这可能会比计算机产生更大的影响,除非计算机ters的速度异常缓慢。我对所有的ters都使用chrome。我甚至只是安装了一次,但没有工作。你是如何测量时间的?再看一次,除非它是一个相当大的图像,否则这应该低于人们可以看到并注意到的差异。我想知道如果你减少
getImageData调用一个,并在每次
my_isblack
调用中重复使用该数据。除非您的图像和图像区域非常大,否则我希望此任务应该非常快。当图像始终相同时,为每个像素调用
getImageData
似乎是不必要的。不确定画布是否有一些优化,但值得怀疑。Unre不过,这与计算机之间的差异有关。您是否在每台计算机上使用相同的浏览器?这可能会产生比计算机更大的影响,除非计算机速度异常缓慢。我对所有计算机都使用chrome。我甚至只安装了一次chrome,但没有成功。您如何测量时间?请再次查看,除非是r对于大型图像,这应该低于人们可以看到并注意到的差异。我想知道如果您将
getImageData
调用减少到一个,并在每次
my_isblack
调用中重用该数据,这一切是否都无关紧要。除非您的图像和图像区域非常大,否则我希望此任务应该非常快。