zoukankan      html  css  js  c++  java
  • 各浏览器对js循环的执行能力测试

    代码如下:

     1 <div id="msg1">msg</div>
     2 <div id="msg2">msg</div>
     3 <script>
     4 function $(d){
     5        return document.getElementById(d);
     6 }
     7 var TimeWast = function () {
     8        var timeStart;
     9        this.Start = function () {
    10               timeStart = new Date();
    11        }
    12        this.wast = function () {
    13               var retVal = new Date().getTime() - timeStart.getTime();
    14               timeStart = new Date();
    15               //console.log("---------------- " + retVal + " ms ----------------\n");
    16               return retVal
    17        }
    18 }
    19  
    20 var arr = new Array(100000000);
    21  
    22 var timeWast = new TimeWast();
    23 timeWast.Start();
    24 var len = arr.length;
    25 for (var i = 0; i < len ; i++) {
    26        var a2 = 1;
    27 }
    28 $('msg1').innerHTML =  timeWast.wast() + "  ms len = arr.length<br/>" ;
    29  
    30 var timeWast = new TimeWast();
    31 timeWast.Start();
    32 for (var i = 0; i < arr.length ; i++) {
    33        var a2 = 1;
    34 }
    35 $('msg2').innerHTML =  timeWast.wast() + "  ms i < arr.length\n" ;
    36  
    37 </script>

    结果如下:

    本人PC:i5-2320 3.00GHz,2G内存。

    可以看出:总体来说,firefox是最牛的,其次是谷歌,Safari与IE差不多了,移动设备上的Safari表现更差(1200+和4000+ms),当然这受到硬件的影响。

    都是循环1亿次,但是两个循环的判断条件稍有区别,下面一个是直接度数组的length属性,而第一个结果是先把length赋给一个变量。经过多次测试,奇怪的是几乎所有浏览器都是后面一个速度更慢,但firefox上面一个速度还慢一点点,当循环次数更大区别就更大,当为10亿次时,区别达到100ms快,还有一个现象的是,opera对两者处理的区别达到4倍几乎。

    如下图:

    我猜想这可能是每个浏览器对数组的length属性处理不一样造成的。

  • 相关阅读:
    DOM对象模型接口规范中的四个基本接口
    js中几种实用的跨域方法原理详解(转)
    关于ie6/7下的z-index
    Mysql++学习(五)------专用SQL结构
    Mysql++学习(四)------模板查询
    Mysql++学习(三)------举个栗子
    Mysql++学习(二)------Mysql++简述
    Mysql++学习(一)------mysql编译安装
    epoll模型实例
    锁、页类型
  • 原文地址:https://www.cnblogs.com/whatmiss/p/2628073.html
Copyright © 2011-2022 走看看