多重循环编码规

【1】多重循环编码规范

在多重循环中,必须将最忙的循环放在最内层,以减少CPU切入循环层的次数。

【2】示例代码

1、新建QT默认工程

2、源码

(1)pro文件

 1 QT       += core gui
 2
 3 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 4
 5 TARGET = TestTime
 6 TEMPLATE = app
 7
 8
 9 SOURCES += main.cpp10         mainwindow.cpp
11
12 HEADERS  += mainwindow.h
13
14 FORMS    += mainwindow.ui

(2)mainwindow.h

 1 #ifndef MAINWINDOW_H
 2 #define MAINWINDOW_H
 3
 4 #include <QMainWindow>
 5
 6 namespace Ui
 7 {
 8     class MainWindow;
 9 }
10
11 class MainWindow : public QMainWindow
12 {
13     Q_OBJECT
14
15 public:
16     explicit MainWindow(QWidget *parent = 0);
17     ~MainWindow();
18
19     void Test();
20
21 private:
22     void result();
23     void doSomething();
24     void TestMaxOuter();
25     void TestMaxInner();
26
27 private:
28     Ui::MainWindow *ui;
29     int m_timeMaxOuter;
30     int m_timeMaxInner;
31 };
32
33 #endif // MAINWINDOW_H

(3)mainwindow.cpp

 1 #include "mainwindow.h"
 2 #include "ui_mainwindow.h"
 3 #include <QTime>
 4 #include <QDebug>
 5
 6 #define CYCLE_TIMES1  (10)
 7 #define CYCLE_TIMES2  (100)
 8 #define CYCLE_TIMES3  (1000)
 9
10 MainWindow::MainWindow(QWidget *parent)
11     : QMainWindow(parent),
12     ui(new Ui::MainWindow),
13     m_timeMaxOuter(0),
14     m_timeMaxInner(0)
15 {
16     ui->setupUi(this);
17 }
18
19 MainWindow::~MainWindow()
20 {
21     delete ui;
22 }
23
24 void MainWindow::Test()
25 {
26     TestMaxOuter();
27     TestMaxInner();
28     result();
29 }
30
31 void MainWindow::doSomething()
32 {
33     for (int i = 0; i < CYCLE_TIMES2; ++i)
34     {
35         int *pTemp = new int;
36         *pTemp = i;
37         delete pTemp;
38     }
39 }
40
41 void MainWindow::TestMaxOuter()
42 {
43     QTime timeTemp;
44     timeTemp.start();
45
46     for (int i = 0; i < CYCLE_TIMES3; ++i)
47     {
48         for (int j = 0; j < CYCLE_TIMES2; ++j)
49         {
50             for (int m = 0; m < CYCLE_TIMES1; ++m)
51             {
52                 doSomething();
53             }
54         }
55     }
56
57     m_timeMaxOuter = timeTemp.elapsed();
58     qDebug() << "TestMaxOuter cost time :: " << m_timeMaxOuter;
59 }
60
61 void MainWindow::TestMaxInner()
62 {
63     QTime timeTemp;
64     timeTemp.start();
65
66     for (int i = 0; i < CYCLE_TIMES1; ++i)
67     {
68         for (int j = 0; j < CYCLE_TIMES2; ++j)
69         {
70             for (int m = 0; m < CYCLE_TIMES3; ++m)
71             {
72                 doSomething();
73             }
74         }
75     }
76
77     m_timeMaxInner = timeTemp.elapsed();
78     qDebug() << "TestMaxInner cost time :: " << m_timeMaxInner;
79 }
80
81 void MainWindow::result()
82 {
83     if (m_timeMaxInner < m_timeMaxOuter)
84     {
85         qDebug() << "MaxInner more than faster :: " << m_timeMaxOuter - m_timeMaxInner;
86     }
87     else
88     {
89         qDebug() << "MaxOuter more than faster :: " << m_timeMaxInner - m_timeMaxOuter;
90     }
91 }

(4)main.cpp

 1 #include "mainwindow.h"
 2 #include <QApplication>
 3
 4 int main(int argc, char *argv[])
 5 {
 6     QApplication a(argc, argv);
 7     MainWindow w;
 8     w.Test();
 9     w.show();
10
11     return a.exec();
12 }

3、运行结果

【3】总结

循环越少越好。如果使用循环,注意循环顺序的内在效率。

Good Good Study, Day Day Up.

顺序 选择 循环 总结

原文地址:https://www.cnblogs.com/Braveliu/p/8613415.html

时间: 2024-10-10 07:57:57

多重循环编码规的相关文章

Java中如何跳出多重循环?

在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环.例如, ok: for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { System.out.println(“i=” + i + “,j=” + j); if(j == 5) break ok; } } 另外,不建议使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中

java 多重循环

1 //http://www.weixueyuan.net/view/6311.html 2 //多重循环 3 import java.util.Scanner; 4 public class Test16{ 5 public static void main(String args[]){ 6 Scanner in =new Scanner(System.in); 7 for (int i=1;i<=3;i++){ //最外层循环 8 int sum=0; 9 for (int j=1;j<

跳出多重循环 JS

关于如何跳出多重循环 loop: //循环标记 for(var key in jsonObj){   for(var i=0;i<jsonObj[key].length;i++){      if(jsonObj[key][i].password=='123456'){         break loop;//跳出双重循环      }   } }

for 的多重循环--java

for的多重循环--java 利用for的多重循环打印出四种不同的三角形的图案. 图案如下: 4种不同三角形图案打印如下------------------******------------------******------------------  * *****------------------*** **  *------------------ code : import java.util.*;public class Sanjiaoxing {    /*     *    *

慕课网-安卓工程师初养成-4-14 Java 循环语句之多重循环

来源:http://www.imooc.com/code/1497 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: 例如:使用 * 打印长方形: 实现代码为: 执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容.此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出.接下来返回外层循环 i 变为 2 ,准备打

java之跳出多重循环

在java 中 要想跳出多重循环,可以在想要跳出的循环外,加上一个标号,然后跳出此标号,也就是跳出相应的循环.如: 我们希望的是当里面的for循环的b=8时,结束整个循环,但是加上break后只是跳出当前的一层for循环,但是我们又不想结束整个方法,所以不能用return,这个时候可以在想要跳出的循环外,加上一个标号,然后跳出此标号,也就是跳出相应的循环.如: 或者可以在想要跳出循环的时候加上可以跳出外部循环的条件.如:

ThinkPHP 3.2.2 在 volist 多重循环嵌套中使用 if 判断标签

今天在 ThinkPHP 3.2.2 的试图模板中使用多重循环,用来把相应类别下对应的文章都依次循环出来,但是无论如何只能循环出类别,类别下的文章无法循环出,( 错误 ) 代码如下: <volist name="list" id="vo"> <tr class='{$vo.help_category_id}'> <td>{$vo.help_category_id}</td> <td class='display_

多重循环程序设计

例题1:给十个单字节无符号数排序: 1 ;功能名称,说明二重循环的实现 2 DSEG SEGMENT 3 BUFFER DB 23,12,45,32,127,3,9,58,81,72 4 N EQU 10 5 DSEG ENDS 6 ; 7 CSEG SEGMENT 8 ASSUME CS:CSEG,DS:DSEG 9 START: MOV AX,DSEG 10 MOV DS,AX 11 MOV BX ,OFFSET BUFFER -1 12 MOV SI, 1 13 FORI:MOV DI,S

Java 循环语句之多重循环

循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: 例如:使用 * 打印长方形: 实现代码为: 执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容.此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出.接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打印