精华内容
下载资源
问答
  • foreach与正常for循环效率对比 答案: 可以看出,循环ArrayList时,普通for循环比foreach循环花费的时间要少一点; 循环LinkList时,普通for循环比foreach循环花费的时间要多很多。 当我将循环次数提升到一百万...

    foreach与正常for循环效率对比

    答案:

        可以看出,循环ArrayList时,普通for循环比foreach循环花费的时间要少一点;
    
        循环LinkList时,普通for循环比foreach循环花费的时间要多很多。
    
        当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要快一点;
    
        但是普通for循环在循环LinkList时,程序直接卡死。
    

    结论:需要循环数组结构的数据使用时,建议普通for循环,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问比较好。

          需要循环链表结构的数据时,一定不要使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃。
    

    原因:foreach使用的是迭代器

    展开全文
  • 即在for循环前,将输出结果矩阵预先分配。例如: a=[0 0 0]; for i=1:3 a(i)=i; end 这样在 for 循环中,就不会在内存中,每次对变量a进行再分配了。 2)矢量化 MATLAB 中,矩阵运算会比 for 循环效率更高,例如对一...

    一般是三个方法:
    1)预分配
    即在for循环前,将输出结果矩阵预先分配。例如:
    a=[0 0 0];
    for i=1:3
    a(i)=i;
    end
    这样在 for 循环中,就不会在内存中,每次对变量a进行再分配了。
    2)矢量化
    MATLAB 中,矩阵运算会比 for 循环效率更高,例如对一个矩阵的所有元素求 sin 值,并不需要用 for 循环,直接:
    a=[1 2 3]
    b=sin(a)
    这样就避免了对 a 中的每个元素进行 for 循环。
    3)并行化
    使用 parfor,将 for 循环的运算量交给多个线程。
    但这样有一些限制Matlab 的 parfor 的使用条件
    请参考 parfor 的相关帮助文档parfor 的帮助文档

    展开全文
  • for循环效率对比

    千次阅读 2016-03-05 08:22:48
    三种for循环1.【普通】for循环for(var i = 0;i ;i++){ console.log(arr[i]); }2.【加强版】for循环for(var i = 0,len = arr.length;i ;i++){ console.log(arr[i]); }3.【for-in循环】fir(var i in arr){ cons

    三种for循环

    1.【普通】for循环

    for(var i = 0;i < arr.length;i++){
        console.log(arr[i]);
    }

    2.【加强版】for循环

    for(var i = 0,len = arr.length;i < len;i++){
        console.log(arr[i]);
    }

    3.【for-in循环】

    fir(var i in arr){
        console.log(arr[i]);
    }

    时间对比

    通过以下代码来计算三个循环的运行时间

    function test1(){
    var arr = new Array(1000000);
    var date1 = new Date();
    for(var i =0;i<arr.length;i++){
    arr[i]=0;
    }
    var date2 = new Date();
    for(var i =0,j=arr.length;i<j;i++){
    arr[i]=1;
    }
    var date3 = new Date();
    for(var i in arr){
        arr[i]=2;
    }
    var date4 = new Date();
    var for1_time = (date2 - date1);
    var for2_time = (date3 - date2);
    var for3_time = (date4 - date3);
    console.log(for1_time); //Firefox:10   Chrome:34
    console.log(for2_time); //Firefox:4    Chrome:5
    console.log(for3_time); //Firefox:750  Chrome:516
    }
    test1();

    结论

    1.三者循环的时间关系
    加强for循环 < 普通for循环<for-in循环
    2.分析:
    2.1.加强for循环之所以运行时间最短是因为,它相对于普通for循环,少了每一次循环都需要的方法解析(arr.length)
    2.2虽然用for…in来迭代Array元素很看起来很方便,但是它返回的除了数字索引外还有可能是你自定义的属性名字。因此还是用带有数字索引的传统的for 循环来迭代一个数组比较好。因为如果你想改变数组对象,比如添加属性或者方法,for…in 语句迭代的是自定义的属性而不是数组的元素。

    展开全文
  • 优化for循环效率

    千次阅读 2016-05-22 15:25:32
    在程序非常大的时候,我们常常需要提高循环程序的使用效率

    在程序非常大的时候,我们常常需要提高循环程序的使用效率

    #include <stdio.h>   
    
    char *str="HUANGYONGZHI";   
    int main(int argc,char **argv)   
    {   
     int i;   
     for(i=0;i<strlen(str);i++)   
      printf("%d/n",i);   
     return (0);   
    }  

    这个上边的程序程序的时间效率是多少呢?

    很多人说,不就是n吗?

    其实,不是。

    这段代码的效率是n^2(n的平方),为什么?

    我们在每次循环的时候,都会调用strlen函数,通过遍历去获得长度,这个函数的效率也是n。

    所以,我们要再加一个变量,去优化:

    #include <stdio.h>   
    
    char *str="HUANGYONGZHI";   
    int main(int argc,char **argv)   
    {   
     int i,n;
    n=strlen(str);   
     for(i=0;i<n;i++)   
      printf("%d/n",i);   
     return (0);   
    } 

    下面这个通过INTEL 的处理器优化for循环的这个例子,也是会让你大开眼界:

    #include <stdio.h>
    int main(int argc,char **argv)
    {
     int i,m,k1,k2,k3,k4,k5,k6,k7,k8;
     m=10000000;
     
     for(i=0;i<m;i++){
      k1++;  k5++;
      k2++;  k6++;
      k3++;  k7++;
      k4++;  k8++;
     }
     return (0);
    }

    我们再看这个for循环,我们是让这些数每次循环都加1,这个效率也不是达到了最优,是这样的,在每次for循环的时候,编译器会给变量i,变量m每个独占一个寄存器,因为是循环嘛,编译器给i和m也是为了效率考虑,不用再向寄存器加载每次循环的判断变量了,但是,一般基于Intel的处理器都只有8个通用寄存器,这样,我们就剩下了6个寄存器给for循环里的内容中的变量使用,但是,我们的变量有8个,我们这时会在把其他的变量入栈,这样,我们的效率变低了,每次出战或者入栈都会消耗两个CPU时钟周期,这样,我们就总共满了8个周期。


    因此,我们可以将程序改成这样:


    #include <stdio.h>   
    int main(int argc,char **argv)   
    {   
     int i,m,k1,k2,k3,k4,k5,k6,k7,k8;   
     m=10000000;   
        
     for(i=0;i<m;i++){   
      k1++;  k5++;   
      k2++;  k6++;   
     }   
     for(i=0;i<m;i++){   
      k3++;  k7++;   
      k4++;  k8++;   
     }   
     return (0)   
    }


    这样子的效率就大大提高了。



    展开全文
  • C++ for循环效率

    千次阅读 2019-01-11 00:33:14
    因此,对于二层for循环访问二维数组的元素,先行后列与先列后行的效率应该是一样的。但是,二维数组的数据往往需要多个内存分页才能容纳,由于C++同一行的元素在一起,先行后列,更符合空间局部性,可以减少换页...
  • python中利用线程池提高for循环效率

    千次阅读 2019-07-24 17:12:57
    任务:读取文件每一行,...for循环方式: f = open('test.txt', 'r') for line in f.readlines(): print(line) f.close() 线程池方式: from multiprocessing.pool import ThreadPool def my_print(item): ...
  • for循环效率问题

    2017-09-11 10:24:54
    下面哪种写法循环语句的效率最高?
  • 多线程解决for循环效率问题

    万次阅读 2018-03-16 11:28:19
    在for里面,如果执行一次for里面的内容所需时间比较长,可以使用线程池来提高for循环效率;public class TreadFor { private static final int loopNum = 1*10; public static void main(String args[]) ...
  • 直接for循环效率最高,其次是迭代器和 ForEach操作。 作为语法糖,其实 ForEach 编译成 字节码之后,使用的是迭代器实现的,反编译后,testForEach方法如下: public static void testForEach(List list) { for ...
  • Java中for each与正常for循环效率对比

    千次阅读 2017-08-20 18:56:29
    循环ArrayList时,普通for循环比foreach循环花费的时间要少一点;循环LinkList时,普通for循环比foreach循环花费的时间要多很多。 当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要...
  • 下面来分析一下for循环和foreach循环的效率对比以及简单分析一下原因。 看下面的代码: public class ForTest { public static void testArrayList(ArrayList&lt;Integer&gt; arrayLi...
  • foreach与正常for循环效率对比。

    千次阅读 2018-03-12 13:42:20
    答案: 可以看出,循环ArrayList时,普通for循环比foreach循环花费的时间要少一点; 循环LinkList时,普通for循环比foreach循环花费的时间要多很多。 当我将循环次数提升到一百万次的时候,循环ArrayList,普通...
  • Android三种for循环效率测试

    万次阅读 2017-01-13 15:55:22
    安卓到现在为止我遇到了两种for循环方式,而常用的for (int i=0;i 首先 for (int i=1;i100000;i++){ mDatas.add(i); } 我们先向mDatas里添加十万条数据,然后再依次循环取出。 方式一: long start = ...
  • Java For循环效率测试

    千次阅读 2014-07-29 13:02:45
    很奇怪的结果!!!! 关于java运行效率的一次小测试
  • for循环效率问题整理

    千次阅读 2010-01-04 18:40:00
    问:下面哪种写法,循环语句的效率更高? for (row=0; row{for ( col=0; col{sum = sum + a[row][col];}}for (col=0; col{for (row=0; row{ sum = sum + a[row][col];}}
  • 关于执行两个for循环效率注意点

    千次阅读 2012-10-23 14:18:31
    问题: for(i=0;i for(j=0;j ...for(j=0;...for(i=0;...这两个程序哪个执行效率高?...双层循环,较长的循环放在内层效率要高 for(j=0;j for(i=0;i {} 这样内层循环要构造100次,所以频繁的在循
  • 首先先来一个案例简单模拟一下: List&lt;String&gt; wifes = new ArrayList&lt;String&gt;...for(int i=0;i&lt;8000;i++){ wifes.add(new Wife(i, i+"的妻子",...
  • do...while, while, for循环效率PK

    千次阅读 2018-11-21 12:15:53
    从中可以看出debug版本do...while的效率要比while的效率高,而while的效率要比for循环高   编译器在进行优化时,是将while循环和for循环转化为do...while循环 while循环的优化 if(XXX) { do { ...
  • 性能有较大的区别吗,有必要采取这种写法吗
  • 主要介绍了如何提高python 中for循环效率,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了swift中c风格的for循环执行效率 的相关资料,需要的朋友可以参考下
  • 以前看到过一个文章说的这方面,具体的不记得所以来问问,大致是这样的: 1.在嵌套for循环中使用字典(hashtable?)而不是把所有的都遍历 ...希望能说一说在嵌套for循环中使用字典避免多次循环提高效率的方式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 371,929
精华内容 148,771
关键字:

for循环效率