Javascript 在速度较慢的计算机上,每秒迭代每个DOM元素40次是否会导致性能问题?

Javascript 在速度较慢的计算机上,每秒迭代每个DOM元素40次是否会导致性能问题?,javascript,jquery,html,performance,Javascript,Jquery,Html,Performance,它在我的计算机上运行得很好——我担心的是:如果不进行优化,这段代码会不会给计算机性能较差的用户造成显著的性能下降,因为它每秒迭代每个DOM元素40次?还是可以接受 注意:这一点是为了更容易地创建一个函数来协调对象的位置,例如:$(myObj).data(“x”,function(){return sin(Date.now()/1000)*50;})应该使对象摆动 它肯定会影响性能,尤其是当你有很多很多因素的时候。每秒40次?这似乎太多了。我不确定使用选择器会快多少,因为这也可能很昂贵 也许可以尝

它在我的计算机上运行得很好——我担心的是:如果不进行优化,这段代码会不会给计算机性能较差的用户造成显著的性能下降,因为它每秒迭代每个DOM元素40次?还是可以接受


注意:这一点是为了更容易地创建一个函数来协调对象的位置,例如:
$(myObj).data(“x”,function(){return sin(Date.now()/1000)*50;})
应该使对象摆动

它肯定会影响性能,尤其是当你有很多很多因素的时候。每秒40次?这似乎太多了。我不确定使用选择器会快多少,因为这也可能很昂贵


也许可以尝试使用
$(“[data-x]”)作为选择器,或者使用更具体的父选择器:
$(“#容器”)。查找(“[data-x]”)

您确定使用$(“[data-x]”)吗?我没有得到任何匹配。@Dokkat不是100%确定;仅当它被定义为属性时。否则,您可以使用特别的
:data
选择器,但这也可能很慢。另一方面,您可能可以使用CSS3动画实现相同的效果,这应该会更有效。这可能会导致速度更快的计算机出现性能问题,具体取决于DOM元素的数量。代码的编写方式应确保在代码首次运行时,最多只需遍历每个DOM元素一次。如果使用jQuery,则不关心性能。当然,它会耗尽任何电池驱动设备的电池。
setInterval(function(){
    $("*").each(function(obj){
        if ($(this).data("x"))
            $(this).css({left:$(this).data("x")()});
        //... more code for y, w, h, x2, y2, etc...
    }
},25);