gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:26:47 25 4
gpt4 key购买 nike

我编写了一段代码,获取黑白图像并检查特定区域(方形)中的像素,最后返回其中有多少黑色的总和,该区域的每个像素都以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++;
}
}
}

正如您在 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;
}
}

正如您所想象的,这有点计算量大。但问题是,我的计算机突然比其他计算机慢得多(即使使用最差的处理器)。我已经检查过 RAM 内存和处理器,没有一个使用率超过 30%,而运行代码之前的处理器接近 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;
}
};

关于JavaScript 在特定计算机上运行速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44980237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com