精华内容
下载资源
问答
  • 一.代码移动 将在循环里面多次计算,但是结果不会改变的计算,移到循环外面去。 例子: 优化前: void lower1(char *s){ int i; for(i=0;i<strlen>='A'&&s[i]<...优化后: ...优化前的版本,由于每次循环都要调用s
  • python for循环优化

    2020-12-22 13:22:55
      最近工作中遇到一个难题,优化一个项目的计算时间。最初,建立项目时用户少,中间使用了for循环,还是嵌套的,共两层,项目整体运行一次耗时1-2个小时。最近,随着用户量增长,项目耗时达到6-7个小时。显然是不...
  • 精选 实验四 循环结构 实验目的 1掌握For语句和while循环语句的使用 2掌握循环的规则及其执行过程 3掌握如何控制循环条件防止死循环或不循环 实验内容 编写程序找出7的倍数中十位数为2的所有3位数 x=100 while x(x-...
  • 程序循环结构优化

    2011-05-22 17:37:00
    循环结构的程序性能优化

    注:这些优化源于编译器优化,有可能改善程序性能,但是不一定符合工程原则。

    1. 通过消除循环内部的分支,可以提高循环内部的流水,从而提高性能。如下图所示,左边是优化前的结构图,右边是优化后的结构图。

     

     

    例子:

    优化前:

    n = getchar();        // A

     

    while( --n )            // B1

    {

         a += arr[n];        //  B2

    }

     

    return a;                 // C

     

    优化后:

     

    n = getchar();

    goto L1;                  // A

     

    L2:

    a += arr[n];             // B2

     

    L1: if( --n )              

    goto L2;                 // B1

     

    return a;                 // C

    展开全文
  • 有些同学会觉得循环有不怎么耗时,从数据库取数据才耗时很长。那么旭东接下来让你知道就算是循环也可能会耗时很长的。 List<T_UserInfo> userList=new T_UserDAL().GetAll();//2000条数据 List<T_...

    1 前言

    有些同学会觉得循环有不怎么耗时,从数据库取数据才耗时很长。那么旭东接下来让你知道就算是循环也可能会耗时很长的。

    List<T_UserInfo> userList=new T_UserDAL().GetAll();//2000条数据
    List<T_LoginLogInfo> loginLogList=new T_LoginLogDAL().GetAll();//20000条数据
    foreach(var userInfo in userList){
        var userLoginLogList=loginLogList.Where(o=>o.UserInfoID=userInfo.UserInfoID).ToList();
    }

    我们碰到这样一个情况要筛出每个用户的登陆日志信息。但是用户也就是userLIst有2000条数据,登陆日志信息有20000条数据。哪怕用LINQ筛选也会耗时很长,比如说一个用户筛选要4毫米,那么2000个用户就要8秒才能筛选完成。

    说到这里,循环结构优化还是很有必要的。

    2 循环+LINQ优化

    碰到这种在循环中使用LINQ筛选数据的情况,想要进行性能优化的唯一办法就是减少使用LINQ进行筛选的数据的数据量。同样是用LINQ筛选数据,1000条数据筛选和20000条数据来进行筛选的情况下,1000条数据的用时明显会少很多。

    List<T_UserInfo> userList = new T_UserDAL().GetAll();//2000条数据
    List<T_LoginLogInfo> loginLogList = new T_LoginLogDAL().GetAll();//20000条数据
    int batchSize = 100;
    for (int i = 0; i < userList.Count / batchSize + 1; i++){//分批筛选
        var itemUserList = userList.Skip(i * batchSize).Take(batchSize).ToList();
        var itemLoginLogList = loginLogList.Where(o=>userList.Select(p=>p.UserInfoID).Contains(o.UserInfoID)).ToList();
        foreach(var userInfo in itemUserList){//用户
            var userLoginLogList = itemLoginLogList.Where(o=>o.UserInfoID == userInfo.UserInfoID).ToList();
        }
    }

    既然这样我们可以使用两层循环来进行筛选,第一层循环因为数据量很大筛选会耗费很多时间但是循环次数会少很多,第二层循环虽然循环次数会很多但是因为筛选的数据量少耗时不会很多。用上面优化过后的代码来举例,第一层循环循环一次要6毫米,但是只有20次,那么第一层循环只有120毫米,而第二层循环循环一次要2毫米,2000次循环下来第二层循环耗时4秒,那么总的耗时为4.12秒会比改进之前的8秒耗时还是会快很多。

    当然具体能快多少还是要看batchSize设置为多少才耗时最少。

    展开全文
  • 为解决煤矿井下瓦斯抽排孔施工过程中正循环压风钻进工艺产生的粉尘污染问题,借鉴引射器原理设计近水平反循环钻头,利用单因素试验设计原理对钻头底部5个结构参数进行试验优化研究,得到钻头底部最优结构参数。...
  • C语言程序中循环结构的性能优化.pdf
  • 基于循环结构优化的Elman神经网络船舶交通流量预测.pdf
  • 语言C++之循环结构

    千次阅读 2018-08-18 11:10:03
    这些只是本蒟蒻的一些...本章讲的是C++语言三大语言结构之一:循环结构,以下附上一道例题 1002:【入门】编程求解1+2+3+...+n  编程求解下列式子的值:S=1+2+3+...+n  首先有一种方法,用等差数列求和,这是...

    这些只是本蒟蒻的一些见解,还望各位神犇积极评论提出宝贵意见,万分感谢!!!!!!!!!!

    第四篇啊,给点关注和赞吧,以后会写更多的!!!!!!!!!!!!!!!!!!!!!!!!!

    本章讲的是C++语言三大语言结构之一:循环结构,以下附上一道例题

    1002:【入门】编程求解1+2+3+...+n

      编程求解下列式子的值:S=1+2+3+...+n 

    首先有一种方法,用等差数列求和,这是小学三年级的奥数题,用的是最基础的结构,如果有不懂,可以看我的上两篇博客《语言C++之基础知识(拓展) 》《语言C++之简单C++语言介绍 

    让我们先来梳理一下题意:求从一到n所有数的和。大家可能会发现,所需加的数会每次加1,而且执行的操作都是加法。所以我们可以用到循环结构。

    以下是循环结构的模板:

    1.for语句

    for(类型名 变量名=刚开始需要的值;循环执行的条件;递增步骤){//类型名可不加,在上面定义就行,花括号道理同if语句,一下须执行的语句有多句就要花括号,一句就不需要
      每个循环都执行的内容;//不管循环到哪里,都执行同样操作
    }

    循环结构比较难理解,所以我来解释一下:

    举个例子:for(long long i=0;i<2;i++){

                          cout<<i<<"5201314"<<endl;

                          cout<<233<<endl;

                       }

    显示一下步骤:1.起始条件是i=0;输出0和5201314并回车,再输出233和回车,然后i加1;

                              2.i=1;输出1和5201314并回车,再输出233和回车,然后i加1;

                              3.i=2;运行条件是i要小于2,所以不符合条件,停止

    需要注意的是,变量名不一定是i,递增步骤也不限,只要不陷入死循环就好;执行的步骤不管循环到了哪里都是一样的,而且变量不一定要用在步骤里(如果这样,for(long long i=1;i<=2;i++)是相同的,循环次数相同。

    还有另外一种使用方法,使两个变量同时变换,例如:

    for(long long i=0,j=1;i<99&&j<99;i+=2,j+=3)

    那么,做题可以用这样的步骤:

    1.基本结构;

    2.循环计算;

    代码如下:

    #include <iostream> 
    using namespace std; 
    int main(){ //基础结构 
      int n, s=0; //定义 
      cin>>n;  //输入 
      for (int i=1; i<=n;++i) //循环 ,枚举出所有的i,即相加的所有数 
      s+=i; // 可表示为s=s+i,为多个,可累计增加 ,切记s需赋值0 
      cout<<s; //加好,数求出,即可输出 
      return 0;//返回值为0,可加可不加 
    }

    还有另外一种while语句的循环结构,模板如下:

    2.while语句

    while(运行需要达到的条件){//花括号的与for语句同理
       需要执行的操作;
    }

    3.do-while语句

    do{//花括号的与for语句同理
       需要执行的操作;
    }while(运行需要达到的条件)

    PS:与while完全一样。

    代码如下:

    #include<iostream>
    using namespace std;
    int main(){
    	long long a,b=0;
    	cin>>a;//基础结构,不讲 
    	while(a!=0){//当a!=0时候执行以下操作 
    		b+=a;//b加上数 
    		a--;//最重要,如果没有这一步,那么a一直大于0,会陷入死循环;而且b加的会一直都是a的初始值 
    	}
    	cout<<b<<endl;
    	return 0;
    }

    只是一种最简单的循环结构,那么就让我来介绍一种更为复杂但更为方便的循环结构——循环嵌套,先来看一道例题:

    求S=1!+2!+3!+.........+10!

    PS:3!=3*2*1;意为3的阶乘

    具体步骤为:

    1.基本结构

    2.循环嵌套,即为双重循环,先循环10个数,再按每个数求这个数的阶乘,加起来

    #include <iostream>
    using namespace std;
    int main (){
      int t,s;
      s=0;
      for(int i=1;i<=10;++i)
        {
        t=1;
        for (int j=1;j<=i;++j)            //求i!
          t*=j;
          s+=t;                           //累加i!
        }
      cout<<s;
      return 0;
    }
    

    具体执行步骤与单重for循环相同,只不过再加了一个for循环,不过双重循环效率很慢,所以尽量用单重,或者优化

    其实这道题就有一种优化方法

    #include <iostream>
    using namespace std;
    int main ()
    {
      int t=1,s=0;
      for(int i=1;i<=10;++i)
      {
        t*=i;                            //t为上一个数的i-1的阶乘值,再乘以i即为i!
        s+=t;                            //累加i!
      }
      cout<<s;
      return 0;
    }
    

    给大家推荐几道题

    https://www.luogu.org/problemnew/show/P1035

    https://www.luogu.org/problemnew/show/P1423

    https://www.luogu.org/problemnew/show/P1424

    https://www.luogu.org/problemnew/show/P1980

    https://www.luogu.org/problemnew/show/P1008

    PS:这一章主要讲循环结构,所以不讲基本结构,如果有不懂,可以看我的上两篇博客《语言C++之基础知识(拓展) 》《语言C++之简单C++语言介绍 》,上一篇也有讲选择结构,《语言C++之选择结构》

    展开全文
  • [技巧篇] 循环代码优化技巧。

    千次阅读 2019-07-23 09:00:00
    本文字数:1178 字阅读本文大概需要:3 分钟00.写在之前「代码优化」应该是我们时刻记在心里的一件事情,从一开始就建立一种正确的编程观念,养成一种好的编程习惯,避免一...

    640

    640

    本文字数:1178 字

    阅读本文大概需要:3 分钟

    00.写在之前

    「代码优化」应该是我们时刻记在心里的一件事情,从一开始就建立一种正确的编程观念,养成一种好的编程习惯,避免一些低效弱智的做法。

    虽然现在计算机越来越快,内存越来越大,很多人会觉得一顿操作猛如虎之后可能才优化了 1 s,实在太微不足道了,但是可别忘了,你以后编的程序可不是给你一个人用的,可能是服务器程序,你这个慢 1 s,一天来个百万次千万次的请求,那对于你的运行效率来说,那是拖慢了成千上万倍。

    尤其是在「循环」上,我们更要注意,因为很多时候问题就是出现在循环上。关于如何在循环上考虑优化代码,就是下面我要介绍的内容。

    01.循环代码优化

    技巧 1:减少循环内部不必要的计算

    什么算是不必要的计算,就是指那些无论放在循环里面还是放在循环外面都不会改变程序运行结果,对于这样的能放到循环外面的一定要放到循环外面。

    技巧 2:嵌套循环中,尽量减少内层循环的计算

    对于循环来说,越往里面计算的频率越高,我们都知道在循环中时间复杂度的计算是乘法的关系,所以也是能往外放的尽量往外放。

    这里我们来看一个例子,假设我有一段下面这样的代码:

    import time
    
    start = time.time()
    for i in range(1000):
         res = []
         for j in range(10000):
             res.append(i * 1000 + j * 100)
    end = time.time()
    print('befor 耗时 {}'.format(end - start))

    运行一下,输入的时间差为:

    befor 耗时 2.323680877685547

    但是我们仔细看一下上述的代码,根据技巧 2 中所说,可以发现对于 i * 1000 来说,完全可以先在外面计算好了,直接把结果拿进来用就可以,那么我们稍微修改一下:

    import time
    
    start1 = time.time()
        for i in range(1000):
         res = []
         n = i * 1000
         for j in range(10000):
             res.append(n + j * 100)
    end1 = time.time()
    print('after 耗时 {}'.format(end1 - start1))

    同样运行代码,输出的结果如下所示:

    after 耗时 1.914416790008545

    相比较可以发现,同样一个结果的代码,只是一个简单的变化,代码的效率就提高了 20%。所以在循环里,一定要细扣哪些是可以丢在外面的。

    技巧 3:尽量使用局部变量

    尽量使用局部变量来代替全局变量,因为局部变量查询比较快,有助于效率的提升。

    技巧 4:使用 join() 连接字符串

    这个技巧呢不仅适用在循环里,可以说在程序的任意地方都适用。

    用 join() 来代替 ‘+’ 去连接字符串,因为 ‘+’ 拼接会产生新的字符串对象,如果你循环 10000次,那就会产生 10000 个对象,而 join 就不会,它只会产生 1 个对象,用这 1 个对象去重复计算。

    640?wx_fmt=gif

    奇怪的 Python 整数缓存机制。

    [超详细] 手把手带你发布自己的专属模块!

    无处不在的「单例设计模式」

    直到面试被问到什么是「共享引用」,我才发现对于它的一无所知...

    640?wx_fmt=jpeg

    ?扫描上方二维码即可关注

    展开全文
  • 采用双向渐进结构优化方法(BESO)研究循环对称结构拓扑优化设计问题。循环对称结构的几何特征无法划分为均匀一致的网格,造成单元灵敏度计算结果与单元体积直接相关,不同网格剖分后的单元体积分布将导致渐进优化...
  • Python编程基础08:循环结构

    千次阅读 多人点赞 2020-11-12 15:50:25
    文章目录一、为什么要用循环(一)老老实实的笨方法(二)采用循环结构的巧方法1、采用计数循环(for循环)(2)采用条件循环(while循环)二、条件循环 - while循环三、计数循环 - for循环 跑道是一圈一圈的,...
  • 第六章 循环结构;实践目标;任务一累加求和;累加求和;求水仙花数;任务二优化登录;优化登录;在指导部分的基础上继续优化登录模块系统启动后进入登录界面系统显示如下 1.系统登录 2.退出系统 实现当用户输入不是1或2时...
  • 一、增强for循环 1. 三种常用for循环 // 普通for循环遍历 for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + ","); } // 迭代器循环遍历 Iterator iterator = list.iterator(); while...
  • 优化指导】2013高考数学总复习 1-1-2-2 循环结构与程序框图的画法 新人教A版
  • python循环结构的学习,主要包括列表、for语句、range()函数、while语句、循环嵌套、break、continue、算法优化等。
  • JavaScript性能优化——循环优化

    千次阅读 2019-05-18 16:22:24
    循环是我们在写代码时经常用到的一种结构,而往往在考虑性能优化时,循环优化能带来很大的收益,特别是当我们不得不循环多次时,如果没对性能进行优化,那毫无疑问会带来性能的负担。 循环的类型 1.for循环 for...
  • 2017_2018学年高中数学第一章算法初步1.1算法与程序框图1.1.2第3课时循环结构优化练习新人教A版必修3201807314129
  • 编译优化之 - 通用循环优化

    千次阅读 2020-09-11 21:58:13
      循环是程序中最常见结构,针对循环已有众多的优化技术。循环优化分为源码上的修改和编译器的优化,编译器能自动执行许多循环优化技术,但对源代码的修改可辅助编译器就行优化处理。 1. 源码上的优化 1. 多重...
  • 第4章 循环结构:周而复始,求同存异 算法描述的三种基本结构 4.1 简单循环结构:从计算一个圆的面积到多个圆的面积看循环结构 循环定义及要点 循环就是反复持续地执行某些动作,有两部分组成 循环体:归纳出...
  • 采用正交试验和计算流体动力学相结合的方法,对矿山多层空区钻探用150 mm反循环钻头双排内喷孔的4个结构参数进行优化分析,分析结构参数变化对钻头抽吸量Q的影响规律,并最终得出这4 个结构参数的主次排序依次为:倾角...
  • 流程控制包括分支结构,跟循环结构。 一、While循环 Labview中的While循环与文本语言中的Do…While循环类似。While循环位于结构选择板,选择后在程序框图中拖拽出所需要的While循环区域,释放鼠标后,运行后选中区域...
  • 循环结构(理论)

    千次阅读 2021-10-04 09:50:33
    循环结构教案
  • 在程序设计时,需要处理大量的重复动作,采用循环结构可以降低程序书写的长度和复杂度,可使复杂问题简单化,提高程序的可读性和执行速度。其中,for循环就是循环结构的一种,另外还有while循环和do-while循环语句。...
  • c语言循环优化

    千次阅读 2014-01-13 11:53:27
    循环优化 提高程序效率的核心是对影响代码执行速度的关键程序段进行优化。在任何程序中,最影响代码速度的 往往是循环语句,特别是多层嵌套的循环语句。因此,掌握循环优化的各种实用技术是提高程序效率的 ...
  • Java的循环结构及嵌套循环

    千次阅读 2020-01-12 17:18:38
    Java的循环结构及嵌套循环Java的循环结构while 循环结构do...while 循环结构for 循环结构Java的嵌套循环概念循环控制语句breakcontinuereturnforeach 循环 Java的循环结构 Java 总共有三种循环结构,分别是while、do...
  • js中有三种结构:顺序结构,选择结构,循环结构 一、顺序结构 顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。 输入 0个或多个 输出 1个或多个 赋值 = 二、选择结构 选择结构表示...
  • Python中选择结构和循环结构练习 看过《射雕英雄传》的人,可能会记得,黄蓉与瑛姑见面时,曾出过这样一道数学题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之余二,问几何? 分析:1、整数;2、除以3、5...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 294,824
精华内容 117,929
关键字:

优化循环结构