找回密码
 欢迎注册
楼主: cn8888

[讨论] 为什么小循环里面套大循环比大循环里面套小循环要快?

[复制链接]
 楼主| 发表于 2014-4-20 15:33:28 | 显示全部楼层
mathe 发表于 2014-4-18 19:24
差距并没有变大,140.438/134.719 和 70.5/66.734没有本质区别,前者反而更小。

5*10^7是70.5-66.734=3.766 ;10^8是140.438-134.719=5.719. 时间增加了,你说呢?
5.719/3.766=1.518587361
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-4-20 21:18:38 来自手机 | 显示全部楼层
总时间增加的更多,线性关系才是正常的

点评

为什么线性关系才是正常的?我觉得应该用实践检验理论,而不是理论检验实践,你说呢?  发表于 2014-4-21 08:54
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-4-20 21:33:25 | 显示全部楼层
要比较的是时间增加率而不是绝对值
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2014-4-21 09:00:39 | 显示全部楼层
再帖一个结果给你们看看:
  1. Clear["Global`*"];(*Clear all variables*)Big = 2*10^8;
  2. Print@Timing[Do[2, {i, 1, 10}, {j, 1, Big}]];
  3. Print@Timing[Do[2, {j, 1, Big}, {i, 1, 10}]];
  4. {276.609,Null}
  5. {293.625,Null}
复制代码

In[13]:= (293.625 - 276.609)/293.625
Out[13]= 0.0579515
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2014-4-21 09:06:23 | 显示全部楼层
我相信,如果把c++与c的上限big弄很大的话,那么这个差别也是能明显地看出来的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2014-4-21 09:14:44 | 显示全部楼层
  1. Clear["Global`*"];(*Clear all variables*)Big = 10^6;
  2. t1 = Timing[Do[2, {i, 1, 10}, {j, 1, Big}]][[1]];
  3. t2 = Timing[Do[2, {j, 1, Big}, {i, 1, 10}]][[1]];
  4. Print@{t1, t2, (t2 - t1)/t2};


  5. {1.375,1.375,-4.84461*10^-16}

  6. Clear["Global`*"];(*Clear all variables*)Big = 10^7;
  7. t1 = Timing[Do[2, {i, 1, 10}, {j, 1, Big}]][[1]];
  8. t2 = Timing[Do[2, {j, 1, Big}, {i, 1, 10}]][[1]];
  9. Print@{t1, t2, (t2 - t1)/t2};


  10. {13.672,13.734,0.00451434}
复制代码

看样子相对量是增加的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-4-21 12:42:45 来自手机 | 显示全部楼层
自己先认真想一想,犯很多简单的错误,别人很难有耐心继续同你讨论的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2014-5-4 13:14:51 | 显示全部楼层
已经在stackoverflow上解决这个问题了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-22 17:01 , Processed in 0.025169 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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