下面引自http://www.cnblogs.com/Sunwayking/articles/1803624.html。

这个问题的主要原因是CPU内部的指令执行机制。现在,基本上CPU内部都有分支指令预测,就是当执行(现在大多将这一阶段提前到预取指令时执行)到转移指令时,都会直接从分支目标缓存(BTB)中取出目标指令的地址,然后将要执行的指令提前预取到CPU的指令预取指令队列中。这样,显然大大提高了效率。举个例子,一个10次的一层循环在执行时,除了在第一次和最后一次会预测错误外,其他8次都会预取成功,避免了执行转移指令时重新取出新指令造成的时间浪费。

所以,当有两层循环,外层循环数为A,内层为B,A远大于B,那么最终造成的预测错误数为A*2+2,而如果外层数为B,内层数为A,预测错误数为B*2+2,显然后者要节省更多时间,而且这个时间是很可观的。A比B越大,这个时间差越明显

另外,还有一篇博客是做的Demo:http://blog.csdn.net/xiemk2005/article/details/6267872

关于这个发表一下自己的感觉

有时候事情不是我们想的那么简单,如果不是碰到了这个问题,我还天真的认为谁在里谁在外对时间是没有影响的呢,因为他们的时间阶都是O(mn),这也让我深深的感觉到纸上得来终觉浅,绝知此事要躬行。

做工程和研究算法是不一样的。

系统优化之大循环在内,小循环主外为什么会效率高相关推荐

  1. 大循环在内,小循环主外为什么会效率高

    转自:http://www.cnblogs.com/jfei1982/articles/891716.html一楼回复. 其实,这个问题的主要原因是CPU内部的指令执行机制.现在,基本上CPU内部都有 ...

  2. jvm 堆外内存_NIO效率高的原理之零拷贝与直接内存映射

    更多内容,欢迎关注微信公众号:全菜工程师小辉~ 前言 在笔者上一篇博客,详解了NIO,并总结NIO相比BIO的效率要高的三个原因,彻底搞懂NIO效率高的原理. 这篇博客将针对第三个原因,进行更详细的讲 ...

  3. 在有循环嵌套时, 要把大循环写在内, 小循环写在外, 原因在此

    以前不理解为什么有循环嵌套时, 要把大循环写在内, 小循环写在外. 看了<<C++反汇编与逆向分析技术揭密>>后, 找到一个原因. 如下图: 原文链接:点击打开链接

  4. 循环嵌套问题:为什么大循环在内,小循环在外可以提高程序的运行效率

    很多人觉得,循环嵌套可以任意嵌套,无论循环次数的大小: 但是事实上并不是这样: 程序对于计算机来说,最终都会编译生成计算机可以识别的指令: 如今的计算机为了提高效率,指令执行机制都会存在预处理指令的分 ...

  5. SQLserver创建与主外键的看法

    一个.背景 最初研究的相关内容数据库.仅仅是正式.从来没有练过,只能慢慢漂流,现在做的客房时,,非常多的知识需要使用视图,慢的实践. 视图:我理解的就是一张表.它把我们所须要的某个表或某几个表中的部分 ...

  6. 使用Entity Framework和WCF Ria Services开发SilverLight之4:Map之主外键映射

    上一篇粗粗讲了一下如何使用EF4.1,针对POCO进行MAP,此篇在此基础上进行一下深入,具体讲一下如何进行映射.   1:主外键中的1对多映射 还是针对School数据库.查看如下两个表: 可以知道 ...

  7. C# 数据库dataGridView刷新数据和主外键判断

    本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改.删除.插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会 ...

  8. MySQL 主外键约束与标准SQL不同的地方

    [标准SQL的外键约束条件] 1): 子表引用父表的主键 drop table if exists child,parent;create table if not exists parent(id ...

  9. EntityFramework Core 迁移忽略主外键关系

    [导读]本文来源于一位公众号童鞋私信我的问题,在我稍加思索后给出了如下一种方案,在此之前我也思考过这个问题,借此机会我稍微看了下,目前能够想到的也只是本文所述方案. 为何要忽略主外键关系 我们不仅疑惑 ...

最新文章

  1. 求平方根的算法 牛顿迭代法和二分法
  2. python 拆分excel工作表_Python将一个Excel拆分为多个Excel
  3. word公式编辑器_论文查重算公式吗 公式怎样避免查重?
  4. java获取vm运行参数_如何获取在Java中运行Java VM的版本?
  5. 微商相册一直显示服务器偷懒,【小程序】微商个人相册多端小程序源码以及安装...
  6. 谷歌 AI 的2019:日均2篇论文,纵横16大方向,一文汇集重要开源算法
  7. 笨办法学 Python · 续 练习 1:流程
  8. 算法总结之 一行代码求两个数的最大公约数
  9. linux之抓包神器tcpdump
  10. 对类型“H12.MainWindow”的构造函数执行符合指定的绑定约束的调用时引发了异常。
  11. 大数据学习入门级书籍推荐
  12. ASPUpload文件上传组件的用法
  13. Oracle ERP 仓库(inventory) 词汇
  14. Shader内置函数(方便自己看)
  15. android 一个app启动另一个App的几种方法
  16. MySql基础之面试查询语句
  17. 路由器To路由器:双路由器连接设置
  18. 搭建个人博客,东半球最强教程
  19. python报时功能_python3多线程实现一个语音报时,定时关机功能的应用
  20. Go 语言测试在开发中的最佳实践 | 使用 Docker 容器进行测试

热门文章

  1. 3D可视化智慧园区建模监控系统,数字化解决方案
  2. Navicat 12 无限期试用
  3. 面试突击90:过滤器和拦截器有什么区别?
  4. Nodejs(特点、环境变量、导入导出、浏览器调试node、npm和yarn、常见模块express和http等使用)
  5. 速卖通新手快速入门手册之一认识物流
  6. 陶哲轩实分析-第9章 R上的连续函数
  7. English_study 动词 : ing 和 to do(不定式) 做宾语
  8. [open source]点阵字体产生器发布
  9. 项目管理的闭环思维和实操
  10. 2014年,趁着互联网金融P2P网贷未被监管,赚点小钱吧~