我如何计算JavaScript代码?

时间:2012-01-11 14:44:29

标签: javascript performance

我的处理器运行速度为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);
    }
};

3 个答案:

答案 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)

有一件事你会在每次循环时创建一个新的日期对象 - 为什么不在进入循环之前创建日期对象进行比较呢?