2013-08-18 43 views
3

我有一个Web应用程序每1秒轮询一次服务器的数据以更新其显示。我发现浏览器的CPU使用率从6%增加到30%,并且没有应用程序交互或行为改变。为什么ajax轮询会随着时间的推移增加CPU使用率?

的问题很容易与浏览器,在那里我轮询间隔减少到100ms的运行此代码,以获得更明显的效果转载:

<html> 
<body> 
<script> 
var i = 0; 
var xhr = new XMLHttpRequest(); 
xhr.onload = function() { 
    console.log("response", i++); 
    setTimeout(send, 100); 
} 
function send() { 
    xhr.open("GET", "/", true); 
    xhr.send(); 
} 
send(); 
</script> 

此代码可以很容易地在任何Web服务器上运行像

python -m SimpleHTTPServer 8888 

在这个例子中,CPU使用率增加非常快,没有明显的原因。我没有处理和使用setTimeout而不是setInterval所以我从来没有重叠的请求。

我使用Chrome(和Safari)进行测试,但仍然看到CPU使用率的快速增长。任何想法为什么?

+0

除非我打开DEV-工具,我看不是CPU使用率增加,http://jsfiddle.net/YuJQ6/ – c69

+0

C69,你是对的!尽管我最初的问题是在使用Webkit的嵌入式系统上通过Qt,但在那里没有开发工具。我会尝试在该系统上面的代码,看看。 – Avner

+0

啊,在这种情况下,嵌入式webkit可能会泄漏。请记住:迄今为止,所有这些蹩脚的嵌入式webkit都是**而非Chrome。我们在Awesomium(.NET)方面遇到了很多麻烦,最终转换到了正常的浏览器(在我们的例子中 - 这是可以接受的)。 – c69

回答

2

因为你是填充新的生产线每100毫秒控制台输出;)

+0

控制台输出用于说明更新UI时通常会发生的某些CPU活动。无论如何,它主要是为了加快正在发生的效果。它没有考虑到随着时间的推移CPU使用率的增加。 – Avner

相关问题