我在我的VM上进行了测试。 它是一个简单的while-true循环,用于将数据插入安装在同一台机器上的MySQL中。
当代码运行时,我注意到它在我们中占50%CPU,50%id,0 wa。
我认为瓶颈是磁盘IO。期待在var deasync = require('deasync');
function syncFunc()
{
var ret = null;
asyncFunc(function(err, result){
ret = {err : err, result : result}
});
while((ret == null))
{
deasync.runLoopOnce();
}
return (ret.err || ret.result);
}
中获得较高wa
。但事实上,我在top
和50 wa
得到0
我想这可能是因为磁盘缓存,但我不知道如何证明我的想法。
我不知道为什么有50%的人闲置,以及如何改善表现。
有没有我错过或可以做的事情?
idle
的输出:
top
的输出:
答案 0 :(得分:0)
虽然True循环可能耗尽大量CPU。如果这不会完全破坏代码的功能,您可以在循环中插入一个暂停,这样循环就不会耗尽所有CPU