zoukankan      html  css  js  c++  java
  • JS的定时到底有多不准

    博客逐步迁移到,独立博客,原文地址,http://www.woniubi.cn/js_hide_tab_setinterval/

    我们一直都在说,JS的定时非常的不准确,但是很少有人去验证他,今天我就来验证一下。首先我们准备一个简单的例子。

    简单例子

    每隔一秒钟,然后输出离最开始的时间差距有多大。

     <script type="text/javascript">
            var begin = (new Date()).getTime();
            var i = 0;
            setInterval(function(){
                ++i;
                var now = (new Date()).getTime();
                var intvals = ((now - begin)/1000).toFixed(3);
                var str = "num:" + i + ";use time:" + intvals;
                console.log(str);
            },1000);
     </script>
    

      

    然后我们看一下输出结果。

    JS输出结果

    看起来结果这没有什么呀,每次只是延时1ms而已,对于我来说,没有什么影响。

    世界不可能永远都是平静的,当资源变成了稀缺,竞争加剧的时候,一切都不是那么美好了。

    非活动Tab

    非活动Tab,就是非当前Tab。浏览器有一种机制,就是优先保证当前Tab资源优先使用。我们可以换一种方式说。

    活动Tab,相当于太子,其他的都是一些阿哥。如果太子吃肉,阿哥可以也干粮。太子连干粮也吃的话,阿哥们只能喝汤了,还是一些阿哥抢着喝汤。没办法,资源就是这么多,不是我不想给你。

    这个例子也很简单,就是活动Tab干一件非常消耗CPU的事情,然后我们过一会去观察我们刚才的Tab。

    for(var i = 0;i!=100000;++i){
                console.log(i);
        }
     

    资源竞争

    这次结果就不是那样简单了,看看,这是多么不靠谱的定时呀。

    活动Tab

    其实你也许说这不能反应问题,如果非活动页面如果做耗时CPU,活动页面定时一样不准?我就做了这么一个测试。结果是这样的

    活动Tab结果

    活动Tab就是不一般呀,延时只是稍微变慢了一点。

  • 相关阅读:
    软件工程第三次个人作业——最大连续子数组和
    LeetCode(258.各位相加)的思路及解决过程
    VS2017中对C++的单元测试
    对大学三年学习生活的总结与反思
    软件工程 实验四 代码评审
    软件工程 实验二
    2020软件工程最后一次作业
    软件工程第四次作业(第二次结对)
    软件工程第三次作业
    软件工程第二次作业:最大字段和
  • 原文地址:https://www.cnblogs.com/HPhone/p/4509493.html
Copyright © 2011-2022 走看看