我的处理器运行速度为2.0 GHz。
我有一台新计算机,除了我的开发工具外,尽可能多地删除了软件。这个系统很干净,没有恶意软件。
当我运行下面的代码时,我每秒大约有2M个循环。那大约是1 MHz。
假设进行和添加,并且进行比较需要10倍最简单的操作,我得到大约10 MHz
为什么我的处理器利用率不高?
var Utility =
{
time: function()
{
var end_time,
start_time,
index = 0;
start_time = new Date().getTime();
while ( index <= 1000000 )
{
index++;
}
end_time = new Date().getTime();
return ( end_time - start_time);
}
};
答案 0 :(得分:4)
假设进行和添加,读取时钟并进行比较 100x最简单的操作(非常保守),我得到(.1MHz * 100)= 1MHz的。
这是不计算机如何工作和测量这样的速度不会让你到任何地方。此外,它在很大程度上取决于所使用的JavaScript引擎。我听说过Chrome使用的V8 JS引擎有很多好处,Opera的速度似乎也很快。
因此,请尝试使用不同的浏览器进行真正的比较。但是如果你想测量一些操作花费了多少时间(伪代码):
var start = get_current_time();
// do the complex operation
var end = get_current_time ();
var time_it_took = end - start;
时间函数应具有尽可能小的粒度。
答案 1 :(得分:4)
这不是关于JavaScript的 - 它更多是关于浏览器以及它处理JavaScript的方式。
每个浏览器都采用不同的方式,但大多数现代浏览器都不会让JavaScript占用100%的资源来防止客户机崩溃。
您不能使用客户端脚本执行此类操作,您必须使用“真实”应用程序才能完全访问计算机。
答案 2 :(得分:2)
有一件事你会在每次循环时创建一个新的日期对象 - 为什么不在进入循环之前创建日期对象进行比较呢?