精华内容
下载资源
问答
  • 多重For循环 优化

    2012-11-06 23:34:34
    多重For循环 优化
  • 多重for循环优化

    2020-06-04 15:31:24
    //直接跳出多重for循环 String[] strA = new String[2]; strA[0] = "A1"; strA[1] = "A2"; String[] strB = new String[3]; strB[0] = "B1"; strB[1] = "B2"; strB[2] = "B3"; String[] strC = new String...

    //直接跳出多重for循环

    
    		String[] strA = new String[2];
            strA[0] = "A1";
            strA[1] = "A2";
            String[] strB = new String[3];
            strB[0] = "B1";
            strB[1] = "B2";
            strB[2] = "B3";
            String[] strC = new String[5];
            strC[0] = "C1";
            strC[1] = "C2";
            strC[2] = "C3";
            strC[3] = "C4";
            strC[4] = "C5";
            if(strA.length>0){
                flag://跳出到这个位置
                for (String A : strA) {
                    System.out.println(A);
                    for (String B : strB) {
                        System.out.println(B);
                        for (String C : strC) {
                            System.out.println(C);
                            if(C.equals("C3")){
                                System.out.println("我是C3我跳出来了!");
                                break flag;
                            }
                        }
                    }
                }
            }
    
    运行结果:
    A1
    B1
    C1
    C2
    C3
    我是C3我跳出来了!
    

    多重for循环

    long start = System.nanoTime();
            for (int i = 0; i < 1000; i++) {
                for (int j = 0; j < 100; j++) {
                    for (int k = 0; k < 10; k++) {
    
                    }
                }
            }
            long end = System.nanoTime();
            System.out.println("外大内小花费时间:"+(end-start));
    
            long start2 = System.nanoTime();
            for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 100; j++) {
                    for (int k = 0; k < 1000; k++) {
    
                    }
                }
            }
            long end2 = System.nanoTime();
            System.out.println("外小内大花费时间:"+(end2-start2));
    
    外大内小花费时间:5512447
    外小内大花费时间:2259557
    

    由此可见外小内大运行时间短,建议使用这种方式

    展开全文
  • 多重for循环优化,提升运行效率

    万次阅读 多人点赞 2018-07-18 09:37:08
    在循环次数较少的时候一般...客户体验会非常不好,才研究这个情况的,事实证明,优化后的多重for循环提升了一大半的效率,是不是很神奇。 当然,本文也有借鉴其他同胞的方法。 实例化变量放在for循环外,减少实...

    在循环次数较少的时候一般不会发现for循环的写法会对效率产生多大问题,但一旦循环次数较多,比如说上万,循环层数较多,效率问题就非常明显了,我是在做一个数据量非常大有三层for循环的项目的时候,为显示曲线出来太花费时间,客户体验会非常不好,才研究这个情况的,事实证明,优化后的多重for循环提升了一大半的效率,是不是很神奇。
    当然,本文也有借鉴其他同胞的方法。

    1. 实例化变量放在for循环外,减少实例化次数,尽量只实例化一次;

    2. 普通变量 改为 寄存器变量
      i++ 改为 ++i

      int i=0, j;
      j=++i; //前置版本,运算对象先自增1,然后将改变后的对象作为求值结果,再赋值给j;
      j=i++; //后置版本,先赋值给j;再运算对象自增1,但求值结果是运算对象改变之前那个值的副本.

      C++Primer 中解释:前置版本的递增运算符避免了不必要的工作,它把值加1后直接返回改变了的运算对象。与之相比,后置版本需要将原始值存储下来以便于返回这个未修改的内容,如果我们不需要修改前的值,那么后置版本的操作就是一种浪费。

    3. for(int i = 0; i<50; i++)
      循环条件使用<要快于<=,>和>=同理;

    4. 把外层可以计算的尽可能放到外层,减少在内层的运算,有判断条件的语句和与循环不相关的操作语句尽量放在for外面;

    5. 应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数;
      采用的是行优先访问原则,与元素存储顺序一致。

      这里写图片描述

    6. 对于一个可结合和可交换的合并操作来说,比如整数的加法或乘法,
      我们可以通过将一组合并操作分割成 2 个或更多的部分,并在最后合并结果来提高性能。
      原理:
      普通代码只能利用 CPU 的一个寄存器,分割后可以利用多个寄存器。
      当分割达到一个数量时,寄存器用完,性能不再提升,甚至会开始下降。
      用代码来描述,如下:

      // 一般情况下的代码 for (i = 1; i < n+1; i++)
      {
          res = res OPER i;
      }
      
      // 循环分割后代码for (i = 1; i < n; i+=2)
      {
          res1 = res1 OPER i;
          res2 = res2 OPER (i+1);
      }

      int 整数加法,性能测试结果对比如下:
      整数的加法,普通代码运行 26s,循环分割后,18s。
      浮点数计算的性能提升,明显大于整数,乘法的性能提升,略大于加法。

    展开全文
  • 以下是测试代码,我的实际代码看起来几乎相似,其中我使用原始矩阵而...在Python中优化多重嵌套for循环import timeimport numpy as npa = 1000b = 500sum2,sum3,sum4 = 0t0 = time.time()x = np.random.random(a*a)...

    以下是测试代码,我的实际代码看起来几乎相似,其中我使用原始矩阵而非随机生成。我怎样才能优化这个嵌套for循环。我知道这是可能的python,但我无法这样做。在Python中优化多重嵌套for循环

    import time

    import numpy as np

    a = 1000

    b = 500

    sum2,sum3,sum4 = 0

    t0 = time.time()

    x = np.random.random(a*a).reshape([a,a])

    for outer1 in xrange(0,a):

    for inner1 in xrange(0,b):

    for outer2 in xrange(0,a):

    for inner2 in xrange(0, a):

    sum2 += x[outer2][inner2] #this is not the only operation I have

    for outer3 in xrange(0,a):

    for inner3 in xrange(0, a):

    sum3 += x[outer3][inner3] #this is not the only operation I have

    for outer4 in xrange(0,a):

    for inner4 in xrange(0, a):

    sum4 += x[outer4][inner4] #this is not the only operation I have

    print time.time() - t0

    print 'sum2: '+str(sum2)+' sum3: '+str(sum3)+' sum4: '+str(sum4)

    我正在使用python 2.7。 谢谢。

    2012-01-21

    Maggie

    +0

    您所做的额外计算使您可以优化代码的方式发生重大变化。而且,更可能是造成瓶颈的原因,而不是这些总和。 –

    展开全文
  • 多重循环性能优化

    千次阅读 2018-12-19 09:16:41
    优化后的多重for循环可以提升大半的效率。 方法 一、实例化变量尽量放在for循环体外,只实例化一次。 二、普通变量改为寄存器变量,如i++改为++i。前置递增运算避免了不必要的工作,它把值加1后直接返回改变了运算...

    简述

    循环次数较多,循环层数较多时,程序效率问题非常明显。优化后的多重for循环可以提升大半的效率。

    方法

    一、实例化变量尽量放在for循环体外,只实例化一次。
    二、普通变量改为寄存器变量,如i++改为++i。前置递增运算避免了不必要的工作,它把值加1后直接返回改变了运算对象本身。
    三、条件比较使用<要快于<=,同理>要快于<=。
    四、把外层可以计算的尽可能放到外层;有判断条件的语句与循环不相关的操作语句尽量放在for外面。
    五、应将最长的循环放在最内层,循环次数最少的放在最外层,以减少CPU跨切循环层的次数。

    for (row = 0; row < 100; ++row)
    {
      for (col =0; col < 5; ++col)
      {
        sum = sum + a[row][col];
      }
    }
    

    如上述代码,效率低。把row放在内层,可以提高效率。
    六、对于一个可结合和可交换的合并操作来说,可以通过将一组合并操作分割成2个或更多的部分,并在最后合并结果来提高性能。
    原理是–普通代码只能利用CPU的一个寄存器,分割后可以利用多个寄存器。当分割到达一个数量时,寄存器用完,性能不再提升,甚至会开始下降。代码示例如下:

    //一般情况代码
    for (int i = 1; i < n+1; ++i)
    {
      res = res OPER i;
    }
    //循环分割后代码
    for (int i = 1; i < n; i+=2)
    {
      res1 = res1 OPER i;
      res2 = res2 OPER (i+1);
    }
    

    测试发现,采用这个方法,浮点数计算性能的提升,明显大于整数;乘法计算性能提升,略大于加法。

    写在最后

    参照链接:[https://blog.csdn.net/u011236602/article/details/81092504]

    展开全文
  • 多重循环优化

    2020-07-28 17:08:07
    1.不要在多重循环内进行字符串String的拼接,非常消耗内存 2.多线程优化 3.for循环判断退出的条件避免函数 4.避免新建对象 5.避免重复计算,a=bcd,可以先在循环外把c*d计算出来(如果可以)
  • 多重for循环如何提速

    2019-08-02 09:51:00
    思知群里面的一个问题 NK(659324338)2019/8/110:44:51有大神对numpy库...这种程序是否可以转化为矩阵运算而不使用双重for循环NK(659324338)2019/8/110:48:05 像这种程序效率太低了彭震宇-CPDI(1679468600)201...
  • 多重循环优化

    2017-11-15 19:15:31
    首先我们看一段代码: 复制代码 for(int i=0;i;i++){ for(int j=0;j;j++){ for(int k=0;k;k++){ testFunction (i,j,k); }
  • for循环优化

    千次阅读 2019-08-24 18:29:56
    一、多个for循环,遵循外小内大 stratTime=System.nanoTime(); for(inti=0;i<10000000;i++){ for(intj=0;j<10;j++){ } } endTime=System.nanoTime(); System.out.p...
  • list循环多重循环优化

    2020-05-14 17:08:34
    List<Map<String,String>> list = new ArrayList<... for(int i = 0;i<20000;i++){ Map<String,String> m = new HashMap<>(); list.add(m); m.put("count","test"+i); } long sta..
  • 目前全部使用的是for循环进行赋值,这样运算速度非常慢,请问该怎样提高运算速度? 代码部分如下: ``` OP.B_1 = 0.1:0.1:1.8; OP.B_2 = 0.1:0.1:1.8; OP.B_3= 0.1:0.1:1.8; OP.B_4 = 0.1:0.1:1.8; OP.B_5...
  • python for循环优化

    千次阅读 2020-02-27 14:36:44
    最初,建立项目时用户少,中间使用了for循环,还是嵌套的,共两层,项目整体耗时1-2个小时。最近,随着用户量增长,项目耗时达到6-7个小时。显然是不能接受的。 for t, w in user_tags: for it, w in tag_items[t]:...
  • 2258字 14 图 :文章字数6 分钟 :预计阅读网络 : 内容来源BabyCoder :编辑整理前言  我在《华为 C 语言编程规范》中看到了这个:当使用多重循环时,应该将最...
  • 多层for 循环优化方法

    2020-04-21 15:16:11
    多层for 循环优化方法 demo public List<AclModuleLevelDto> roleTree(int roleId) { // 1、当前用户已分配的权限点 List<SysAcl> userAclList = sysCoreService.getCurrentUserAclList(); // 2、...
  • 多重for循环性能分析

    2011-08-02 11:45:48
     上述只是一个很常见的例子,有时候,为了使性能达到我们的要求,我们要优化代码,关键的部分部分通常利用汇编代码去实现,因为使用特定的CPU提供的特殊的指令集通常能大大提高程序的性能(但是,可移植性通常也...
  • C++ For循环优化

    2010-07-22 19:01:58
    C++循环冒泡法优化 在看到for循环冒泡排序(c++) 后 再次优化了一下,它的程序不能运行,我运行优化的成功了,对初学者理解有很大帮助(还有注释)
  • 主要介绍了Java for循环性能优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 要实现一个重组网址的功能,把可能出现的情况给穷举出来,下面代码已经实现(写的比较烂,请见谅),但是在网址比较长的情况下,重组网址的时候遇到大循环问题,导致内存溢出,请各位大侠给优化一下 ``` public...
  • HLS-3for循环优化

    2017-11-15 11:00:00
    一、对循环体的展开 C语言的循环体都是折叠起来的,当综合后会顺序执行,映射到RTL的话就相当于一套电路被分时复用; 进行展开的话就相当于是对电路...二、for循环合并 loop regin:{ add: for(int i=0;i c[i]=a
  • python双重for循环优化方法。

    千次阅读 2020-08-31 14:54:06
    有些特殊需求需要用双重for循环遍历图像来操作例如下面代码 def getbinarizationimg(simg, targeth, targetw): print(simg.shape) h,w,c = simg.shape box = np.zeros((h, w),dtype=np.uint8) pole = np.zeros...
  • 性能优化-多层嵌套for循环如何优化

    千次阅读 2019-11-23 14:25:14
    代码示例 ... /** * @program: cwl-performance-optimization * @description: 测试for循环-嵌套循环 * @author: ChenWenLong * @create: 2019-11-22 11:27 **/ public class TestNestedLoop { // 当需...
  • for循环代码优化

    2020-08-04 14:56:49
    今天就来说一下java代码优化的事情,今天主要聊一下对于for(while等同理)循环优化,它作为三大结构之一的循环,在我们编写代码的时候会经常用到。循环结构让我们操作数组、集合和其他一些有规律的事物变得更加的...
  • Matlab的for循环优化

    千次阅读 2013-05-13 17:29:56
    因为学习和工作的原因,最近又开始使用已经许久没有接触的Matlab。在没有什么特殊考虑的情况下,信手写下了下面的m代码片段: ... 1 for i=1:1:(imgHeight-tmpHeight+1) ... 2 for j=1:1:(img
  • C语言深度解剖之——for循环优化

    千次阅读 2017-02-06 18:07:07
    【建议1-27】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。 例如: ************************************以上是原文*********************...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,831
精华内容 8,332
关键字:

多重for循环优化