CPU昂贵的javascript

CPU昂贵的javascript,javascript,cpu,Javascript,Cpu,我计划从javascript复制统计数据,但我对该脚本的CPU使用率很感兴趣(在按下开始按钮之后)。添加脚本会这么贵吗 你能告诉我为什么脚本的CPU如此昂贵吗?我不熟悉javascript,但我认为简单的算术运算消耗了太多的客户端CPU。这样可以吗?增加的数量是CPU使用率高的原因。在我的AMD Phenom II X2上,它在Firefox上运行时占用了大约19%的CPU。该页面的源代码实际上是,如果您查看javascript,就会发现它是模糊的,但我怀疑某个setTimeout()/setI

我计划从javascript复制统计数据,但我对该脚本的CPU使用率很感兴趣(在按下开始按钮之后)。添加脚本会这么贵吗


你能告诉我为什么脚本的CPU如此昂贵吗?我不熟悉javascript,但我认为简单的算术运算消耗了太多的客户端CPU。这样可以吗?

增加的数量是CPU使用率高的原因。在我的AMD Phenom II X2上,它在Firefox上运行时占用了大约19%的CPU。该页面的源代码实际上是,如果您查看javascript,就会发现它是模糊的,但我怀疑某个setTimeout()/setInterval函数会在每个时间段将该数字增加一个数量。以这样的速度,我怀疑它可能会在一秒钟内用完所有1000个插槽,或者至少100个,看看这些数字有多平滑。然后它必须更新您的页面,可能需要使用document.getElementById()函数,数字甚至是格式化的,并且是可爱的蓝色,这会增加更多的负载

简单的算法确实会消耗CPU,但像我的3.4 gHz双核处理器这样的现代处理器可以在很短的时间内通过它们,而且你甚至看不到任务管理器中的CPU使用高峰。然而,来自BBC新闻的脚本上的CPU使用量几乎是一个恒定流,当您检查任务管理器时,它确实会显示出来。算术在客户端上是没有问题的,只要它不需要花费很长时间来执行,不冻结/挂起页面,或者不重复

编辑:经过一点反编译和我以前反向工程时代的一些技巧,下面是在该页面上运行的脚本文件的来源:

如果您查看它,这是更新的行:

var currentValue = Math.floor(details.base + details.rate/1000 * differenceInMS(details.start, new Date()));
        glow.dom.get(details.div).html("<strong>"+commaFormatted(currentValue)+"</strong>");
var currentValue=Math.floor(details.base+details.rate/1000*differenceInMS(details.start,new Date());
glow.dom.get(details.div).html(“”+commaFormatted(currentValue)+“”;
它需要添加、分割和铺地板,所有这些都是非常劳动密集型的,它甚至还需要创建一个新的Date()变量。通过跟踪
differenceInMS()
函数,您可以看到更多的地板和时间函数。如果我这样做的话,我会用算术做一个简单的setTimeout(),并且可能会少一点劳动强度来继续查找当前的日期和时间。哦,现在您看到了
glow.dom.get()
必须搜索并找到页面的该部分,然后在更新之前将数字转换为逗号形式。整个脚本非常渴望处理能力

经验教训:
要么选择劳动密集型的短型,要么选择简单型的长型。不要尝试去做他们正在做的事情,无论是处理器密集型还是在短时间间隔内重复。这会很快拖累你的CPU。如果我的dual cure 3.4 gHz AMD Phenom平均燃烧19%,想象一下它在一台旧笔记本电脑上运行。这很容易使处理器最大化,导致页面挂起和冻结。哦,作为补充说明,在x64版本的Firefox上运行会降低我的x64处理器上的CPU使用率。我多年来恳求Adobe和Firefox使用x64的另一个原因。为Firefox 4.0祈祷吧。

我非常怀疑它的算法是如此昂贵:通常复杂的DOM和CSS操作是昂贵的。你有没有测量过有问题的脚本,并看到高CPU使用率?如果你有一个10毫秒增量的间隔函数,并且你在里面放了很多计算,那么是的,JavaScript可能会占用大量CPU。Chrome(8岁左右)8%,IE(9岁左右):14-18%,Firefox 3.6岁左右):页面混乱,没有找到开始按钮。有根据的猜测(我的经验)是,屏幕重写/重新绘制占用了大部分CPU时间。不是算术题。非常感谢你宝贵而详尽的回答。按照简单的方式(算术伦理和setTimeout),您认为使用jQuery框架有什么意义/优势吗?@dole,jQuery在编程时为您节省了很多时间,也使事情变得更简单,但不会影响算术和setTimeout。它更倾向于遍历、AJAX、事件处理和动画。我建议你在熟悉基本知识之前不要开始使用它。将jQuery看作是一个更为简捷和方便的框架,在运行.tylostinthecode之前必须学会走路。我想听听你对这个问题的看法: