微信扫一扫打赏支持

javascript疑难问题---5、javascript代码执行时间的计算

javascript疑难问题---5、javascript代码执行时间的计算

一、总结

一句话总结:

我们可以用console.time('test')和console.timeEnd('test')来计算一段代码的运行时间,需要计算时间的代码放在这两个函数之间,函数参数'test'表示这个运行时间段的名字
求质数的优化
<script>
    console.time('test');
    for(var i=2;i<=10000;i++){
        var is_zhishu=true;
        for(var j=2;j<=Math.sqrt(i);j++){
            if(i%j==0){
                is_zhishu=false;
                break;
            }
        }
        //if(is_zhishu )console.log(i);
    }
    console.timeEnd('test');//test: 5.151123046875ms
</script>

 

 

 

 

二、javascript代码执行时间的计算(课程代码)

博客对应课程的视频位置:5、javascript代码执行时间的计算
https://www.fanrenyi.com/video/4/131

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>javascript代码执行时间的计算</title>
 6 </head>
 7 <body>
 8 <!--
 9 求 1-100里面所有的质数
10 遍历的时候 2-100
11 5 2-4
12 18 2-17
13 
14 1*18
15 3*9
16 -------平方根
17 9*3
18 18*1
19 
20 9
21 1*9
22 3*3
23 9*1
24 
25 24
26 2
27 4
28 
29 
30 计算js代码执行的时间
31 console.time('test');
32 console.timeEnd('test');
33 
34 -->
35 <script>
36 console.time('test');
37 for(var i=2;i<=10000;i++){
38     var is_zhishu=true;
39     for(var j=2;j<i;j++){
40         if(i%j==0){
41             is_zhishu=false;
42         }
43     }
44     //if(is_zhishu )console.log(i);
45 }
46 console.timeEnd('test');//test: 243.820068359375ms
47 </script>
48 
49 <!--求质数的优化-->
50 <!--<script>-->
51 <!--    console.time('test');-->
52 <!--    for(var i=2;i<=10000;i++){-->
53 <!--        var is_zhishu=true;-->
54 <!--        for(var j=2;j<=Math.sqrt(i);j++){-->
55 <!--            if(i%j==0){-->
56 <!--                is_zhishu=false;-->
57 <!--                break;-->
58 <!--            }-->
59 <!--        }-->
60 <!--        //if(is_zhishu )console.log(i);-->
61 <!--    }-->
62 <!--    console.timeEnd('test');//test: 5.151123046875ms-->
63 <!--</script>-->
64 </body>
65 </html>

 

 

 

 

 

三、关于javascript代码执行时间的计算

转自或参考:关于javascript代码执行时间的计算
https://www.cnblogs.com/williamcai/p/4781875.html

 

以前我们要计算程序,函数的执行之间,通常是在代码执行前后加入时间戳,两者的差值即为执行时间,如下:

var count=1000;
var begin=new Date();
for(var i=0;i<count;i++){
document.createElement("div");
}
var end=new Date();
var time=end-begin;
console.log("time is="+time);

这样确实能够显示代码执行时间,但是计算其他的代码要重复写时间戳,有必要写一个对象封装执行过程,先新建一个Timer,

var Timer={
  data:{},
  start:function(key){
    Timer.data[key]=new Date();
  },
  stop:function(key){
    var time=Timer.data[key];
    if(time)
    Timer.data[key]=new Date()-time;
  },
  getTime:function(){
    return Timer.data[key];
  }
};
// test
Timer.start("div");
for(var i=0;i<count;i++
){
document.createElement("div");
}
Timer.stop("div");
console.log("the time is:"+Timer.getTime());
 

这是我们定义的方法,只能显示执行时间,不过chrome等主流浏览器的console,提供的方法不仅能够显示时间,还能够定位某个函数。

代码格式如下:

如果单纯的计算时间,可以使用console.time(),过程如下:

console.time("XXX");

 <code></code>

console.timeEnd("XXX");

如果还需要一些其他的性能指标的话,可以使用console.profile,过程如下:

console.profile("XX");

<code></code>

console.profileEnd("XX");

 

 
posted @ 2020-03-01 15:22  范仁义  阅读(601)  评论(0编辑  收藏  举报