鱼C论坛

 找回密码
 立即注册
查看: 3944|回复: 7

for语句的疑问

[复制链接]
发表于 2012-10-12 21:45:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. test1
  2. for(i = 0; i < n; i++)
  3. {
  4.      A;
  5.      B;
  6.      C;
  7. }

  8. test2
  9. for(i = 0; i < n; i++)
  10. {A;}
  11. for(i = 0; i < n; i++)
  12. {B;}
  13. for(i = 0; i < n; i++)
  14. {C;}
复制代码
在什么时候,test1的速度快?什么时候,test2的速度快?原因
今天笔试不会呐,各位哥哥姐姐弟弟妹妹帮帮忙
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-13 00:06:01 | 显示全部楼层
等大大侠指点
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-13 00:34:39 | 显示全部楼层
感觉怎么都是test1快,求指点!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-13 09:37:14 | 显示全部楼层
我的理解是,现代CPU执行代码都是采用流水线技术,就是提前把将要运行的代码提前装载到cache(当然需要一定的分析技术---分支预测技术)如果A ;B ;C ;是顺序执行的话,那么test快些,减少了,调用for循环消耗的资源,如果A; B;C;是独立的,而且有跳转语句,这样如果放在一起cache命中率就会降低,然后分模块化写3个for循环是为了函数的局部化也是为了提高cache,这样就第二个快。(现代的CPU执行的速度非常快,其实多写几个函数和少写些根本看不出区别,而且编译器优化的也非常好,但是CPU就怕cache命中率低,这样非常耗时)
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-13 12:18:09 | 显示全部楼层

忘了说那个ABC三个语句独立的,不共享任何资源
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-13 16:54:07 | 显示全部楼层
想不出一个问题可以一步做 分三步如何能快起来 也许水平还没到那个境界 我认为任何情况下第一种永远比第三种快
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-13 17:09:25 | 显示全部楼层
知道现在的CPU都是多核多线程的吧,intel推出的超线程,所以如果程序支持多线程的话,那么当然程序就非常快,如今支持多线程比较好的软件就是,比如数据库,图像视频转换,等等。这个可能要涉及现代CPU工作原理了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-13 21:18:51 | 显示全部楼层
反汇编看看,就明白了!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-15 14:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表