两个函数,就for循环内有语句差异,能简单合并掉么?

原谅我这个毫无主题的标题。。因为确实不知道如何描述。
有下面两个函数,testParsetestGetTime,除了for循环内一句定义语句外,其他函数体内容完全一样,想问下可以把这两个函数合并成一个么?
主要是为了测试两种Date()方法的效率,所以times值会变得很大

    function testParse(times){
    var startTime=new Date();
    for (var i = 0; i < times; i++) {
        var d=new Date();
        var formatDate=Date.parse(d);//这一行填写具体的格式化函数
    };
    var endTime=new Date();
    var gapTime=endTime-startTime;
    console.log('一共耗时:'+gapTime+'ms');
  }

    function testGetTime(times){
    var startTime=new Date();
    for (var i = 0; i < times; i++) {
        var d=new Date();
        var formatDate=d.getTime();//这一行填写具体的格式化函数
    };
    var endTime=new Date();
    var gapTime=endTime-startTime;
    console.log('一共耗时:'+gapTime+'ms');
  }

一开始我的思路是swtichfor中,但是感觉对函数效率影响比较大(因为当for循环次数比较大的时候,感觉基本上时间都是switch用掉的,对结果污染比较大。

或者就是swtich放到for外面,但是这样的话for循环体的代码就不能重用,所以想问下有没有别的方法?

阅读 2k
评论
    2 个回答
    • 1.9k
    javascriptfunction test(times,func){
        var startTime=new Date();
        for (var i = 0; i < times; i++) {
            func();
        };
        var endTime=new Date();
        var gapTime=endTime-startTime;
        console.log('一共耗时:'+gapTime+'ms');
    }
    
    function t_parse() {
        var d=new Date();
        var formatDate=Date.parse(d);
    }
    
    function t_getTime() {
        var d=new Date();
        var formatDate=d.getTime();
    }
    
    test(10000,t_parse);
    test(10000,t_getTime);
    

    试了下拆成这样测试的结果跟你给出的函数测试结果差不多。
    你还可以测点别的想测的……

      function testFN(times,ready){
              var startTime=new Date();
              for (var i = 0; i < times; i++) {
                  if(ready){
                      var d=new Date();
                      var formatDate=Date.parse(d);//这一行填写具体的格式化函数
                  }else{
                      var d=new Date();
                      var formatDate=d.getTime();//这一行填写具体的格式化函数
                  }
              };
              var endTime=new Date();
              var gapTime=endTime-startTime;
              console.log('一共耗时:'+gapTime+'ms');
          }
          testFN(10000,true);
          testFN(10000,false);
      
        撰写回答

        登录后参与交流、获取后续更新提醒

        相似问题
        推荐文章