我计划从BBC新闻复制统计javascript ,但我对该脚本的CPU使用情况感兴趣(按下"开始"按钮后).可以添加脚本这么贵吗?
你能告诉我为什么那个脚本太昂贵了吗?我是javascript的新手,但我认为简单的算术运算会占用过多的客户端CPU.这可以吗?
增加的大量数字是高CPU使用率的来源.在我的AMD Phenom II X2上,它运行时在Firefox上运行大约19%的CPU.该页面的来源实际上是http://www.realtimestatistics.org/,如果你看一下javascript,它会被混淆,但我怀疑有些setTimeout()/ setInterval函数会在每个时间段增加一个数量.按照目前的速度,我怀疑它可能会在一秒内耗尽所有1000个插槽,或至少一百个,看看数字是多么平滑.然后它必须更新您的页面,可能使用document.getElementById()函数,并且数字甚至被格式化,并且是一个可爱的蓝色,这增加了更多的负载.
简单的算法确实消耗CPU,但像我的3.4 gHz双核这样的现代处理器可以立即通过它们,你甚至看不到任务管理器中的CPU使用率高峰.但是,BBC新闻中该脚本的CPU使用率几乎是一个恒定的流,当您检查任务管理器时,它会显示出来.算术在客户端上没有问题,只要执行时间不长,不冻结/挂起页面,或者不再发生.
编辑:经过一些反编译和一些呃,从我旧的逆向工程日开始的技巧,这里是在该页面上运行的脚本文件的来源:http: //news.bbc.co.uk/nol/shared/spl/高/ sci_nat/10/the_internet /计数器/ JS/internet_ticker.js
如果你看一下,这就是更新的路线:
var currentValue = Math.floor(details.base + details.rate/1000 * differenceInMS(details.start, new Date()));
glow.dom.get(details.div).html("<strong>"+commaFormatted(currentValue)+"</strong>");
Run Code Online (Sandbox Code Playgroud)
它正在添加,然后划分和铺设地板,所有这些都非常耗费人力,甚至还需要创建一个新的Date()变量.跟踪该differenceInMS()功能,您会发现您获得了更多的地板和时间功能.如果我这样做,我会用算术做一个简单的setTimeout(),并且可能需要更少的劳动密集来继续查找当前的日期和时间.哦,你必须glow.dom.get()搜索并找到页面的那一部分,然后在更新之前将数字转换为逗号形式.整个脚本非常渴望处理能力.
获得的经验教训:要么是劳动密集型,要么是短暂的,要么是简单而长久的.不要试图做他们正在做的事情,处理器密集和短时间间隔重复.这会迅速拖累你的CPU.如果我的双重固化3.4 gHz AMD Phenom的平均燃烧率为19%,那么想象它就像一台旧笔记本电脑那样运行.这可能很容易地最大化处理器并导致页面挂起和冻结.哦,作为补充说明,在x64版本的Firefox上运行会降低x64处理器的CPU使用率.我多年来乞求Adobe和Firefox去x64的另一个原因.手指越过Firefox 4.0.
| 归档时间: |
|
| 查看次数: |
1514 次 |
| 最近记录: |