Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算JavaScript代码的时间?_Javascript_Performance - Fatal编程技术网

如何计算JavaScript代码的时间?

如何计算JavaScript代码的时间?,javascript,performance,Javascript,Performance,我的处理器运行在2.0GHz 我有一台新电脑,除了我的开发工具外,我的软件尽可能多。该系统是干净的,没有恶意软件 当我运行下面的代码时,我每秒得到大约2M个循环。这大约是1兆赫 假设做加法,做比较需要10倍最简单的运算,我得到大约10兆赫 为什么我不能更多地利用我的处理器 var Utility = { time: function() { var end_time, start_time, index = 0;

我的处理器运行在2.0GHz

我有一台新电脑,除了我的开发工具外,我的软件尽可能多。该系统是干净的,没有恶意软件

当我运行下面的代码时,我每秒得到大约2M个循环。这大约是1兆赫

假设做加法,做比较需要10倍最简单的运算,我得到大约10兆赫

为什么我不能更多地利用我的处理器

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);
    }
};
var实用程序=
{
时间:函数()
{
var结束时间,
开始时间,
指数=0;
开始时间=新日期().getTime();

然而(index首先,每次通过循环时都要创建一个新的日期对象——为什么不在进入循环之前创建一个日期对象进行比较呢

假设做加法,读时钟,做比较 100倍最简单的操作(非常保守),我得到(.1MHz*100)= 1MHz

这是而不是计算机的工作方式,像这样测量速度不会让你有任何进展。此外,这在很大程度上取决于所使用的JavaScript引擎。我听说Chrome使用的V8 JS引擎有很多优点,Opera的速度似乎也很快

因此,请尝试使用不同的浏览器进行真正的比较。但如果您想测量执行某些操作(伪代码)所需的时间:


时间函数应该具有尽可能小的粒度。

这不是关于JavaScript的问题,而是关于浏览器及其处理JavaScript的方式

每个浏览器的做法都不一样,但大多数现代浏览器不会让JavaScript占用100%的资源来防止客户端机器崩溃


总之,你不能用客户端脚本做这样的事情,你必须使用“real”可以完全访问计算机的应用程序。

为什么不设置一个超时时间呢?在什么世界中,
0.1*100
=
1
?构造新日期对象的调用将涉及到对操作系统的系统调用,以获取当前时间。这将是完成的大部分工作。哦,如果我发现你的话r网站是这样对我的浏览器的,我再也不会访问它了,我会告诉我的家人和宠物也不要访问它。我否决了你的问题,因为你似乎无法理解高级代码(如JavaScript)之间的区别还有CPU执行的低级指令。由于你对问题的措辞方式,你表现得傲慢自大,以为问题肯定不在你身上。向下投票会让我变得娘娘腔吗?因为他需要检查每次迭代的当前时间;否则循环将不知道何时停止。当然——卡尔l每次通过循环获取时间,但不要每次都创建新对象。然而,JavaScript日期对象不是这样工作的。
getTime()
例程返回特定对象的时间戳值,而不是当前系统时间。对于给定的日期对象,该值永远不会更改(除非对象本身被明确地改变了)。人们每天都会学到一些新的东西——w3c文档中没有任何迹象表明返回的时间是不变的(至少我找不到一个时间),但根据Mozilla的说法,这可能是一个明智的想法,有一个
.now()
返回当前系统时间的日期构造函数上的函数!这是我不知道的。(不知道它是否在Firefox以外的浏览器中可用。)问题是,获取当前时间总是需要进行某种类型的系统调用。换句话说,这是一次进入操作系统的旅行,而且这总是会很昂贵。
var start = get_current_time(); 
// do the complex operation
var end = get_current_time ();

var time_it_took = end - start;