循环嵌套外小内大原则

简介: 循环嵌套外小内大原则
for (int i = 0; i < 10; i++) {
   for (int j = 0; j < 10000; j++) {
   }
}


引入流水线工作机制以后,为了配合流水线工作,处理器增加了一个分支目标缓冲器(Branch Target Buffer)。在流水线工作模式下,如果遇到分支结构,就可以利用分支目标缓冲器预测并读取指令的目标地址。分支目标缓冲器在程序运行时将动态记录和调整转移指令的目标地址,可以记录多个地址,对其进行表格化管理。当发生转移时,如果分支目标缓冲器中有记录,下一条指令在取指令阶段就会将其作为目标地址。如果记录地址等于实际目标地址,则并行成功;如果记录地址不等于实际目标地址,则流水线被冲洗。同一个分支,多次预测失败,则更新记录的目标地址。因此分支预测属于“经验主义”或“机会主义”会存在一定的误测。


基于上述原因,大家以后在编写多重循环时应该把大循环放到内层,这样可以增加分支

预测的准确度,如下面的示例所示:

for(int i=0;i<10;i++){
  //下面每次循环会预测成功9999次
  //第1次没有预测,最后退出循环时预测失败1次
  //这样的过程重复10次
 for(int j=0;j<10000;j++){
  a[i][j]++;
  }
}
for(int j=0;j<10000;j++)
  //下面每次循环会预测成功9次
  //第1次没有预测,最后退出循环时预测失败1次
  // 这样的过程重复10000次
  for(int i=0;i<10;i++){
    a[i][j]++;
  }
}


相关文章
|
Java
面向对象的"六原则一法则"
单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",就如同葵花宝典或辟邪剑谱的中心思想就八个字"欲练此功必先自宫",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。
1368 0
面向对象基本原则(2)- 里式代换原则与依赖倒置原则
面向对象基本原则(1)- 单一职责原则与接口隔离原则 面向对象基本原则(2)- 里式代换原则与依赖倒置原则 面向对象基本原则(3)- 最少知道原则与开闭原则
|
设计模式 Java 应用服务中间件
依赖反转原则|设计原则
依赖反转也称为依赖倒置,它的定义是十分抽象的。
|
SQL 程序员 测试技术
本着什么原则,才能写出优秀的代码? (一)
本着什么原则,才能写出优秀的代码? (一)
175 0
本着什么原则,才能写出优秀的代码? (一)
|
设计模式 前端开发 关系型数据库
本着什么原则,才能写出优秀的代码? (二)
本着什么原则,才能写出优秀的代码? (二)
224 0
本着什么原则,才能写出优秀的代码? (二)
循环嵌套
一个循环语句之中嵌套其它的循环语句就称为循环嵌套处理,循环嵌套层次越多时间复杂度就越高。
114 0
循环嵌套
|
10月前
|
C# 计算机视觉
26.C#循环嵌套
26.C#循环嵌套
75 0
|
算法
如何理解分治思想
分治思想就是把复杂问题、拆分成诺干个相同的小问题,然后将问题逐步解决掉,合并到一起的过程,就是分治思想。简单来说,分治思想就是“分而治之”,将复杂问题拆分成诺干个相同的小问题进行解决。
165 0
如何理解分治思想
|
设计模式 数据安全/隐私保护
# 设计原则与思想 --- 重复代码or依赖反转原则(DRY)
# 设计原则与思想 --- 重复代码or依赖反转原则(DRY)