作者asleepme (冬天了)
看板Programming
标题[问题] 面试遇到的程式问题,现在还想不出来(MTK)
时间Sun Dec 30 13:56:46 2007
※ [本文转录自 Tech_Job 看板]
作者: asleepme (冬天了) 看板: Tech_Job
标题: [问题] 面试遇到的程式问题,现在还想不出来...
时间: Sun Dec 30 13:42:09 2007
是当面问的
不过他当初是这样讲的:
有一个for回圈,从0加到100
可是我觉得他不够快,要怎样才能让他更快
for( i=0; i<=100; i++)
s=s+i;
不可以用数学公式
请忽略宣告或初始化的问题,我想不是重点
因为我当初把i=0改成i=1的时候他只是无言的笑了笑
请指点
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.137.82.90
1F:推 skylight55:可以请问是哪家公司问的吗? 12/30 13:45
2F:推 juc:换快一点的clock....哈 开个玩笑 12/30 13:47
3F:→ poga:++i 12/30 13:49
4F:→ allstarschh:这是高斯的国小数学老师问的吗?? @.@ 12/30 13:49
5F:推 bitspirit:用递回?? 12/30 13:50
6F:推 bxxl:改成回圈做十次,一圈做十个加法/ 12/30 13:51
7F:→ asleepme:我讲一下可能大家会认真点,MTK 12/30 13:52
8F:→ asleepme:请问++i跟i++为什麽在速度上会有差? 12/30 13:53
9F:推 stealk:parallel programming? 12/30 13:53
10F:→ asleepme:递回会更慢吧... 12/30 13:53
11F:推 purejack:把回圈展开? 12/30 13:54
12F:→ asleepme:平行计算喔,我不太懂耶,可以解释清楚点吗? 12/30 13:54
13F:→ asleepme:bxxl这也是满特别的,我一直觉得他是要加速回圈效果 12/30 13:55
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.137.82.90
14F:推 oohay:基本的加快就是把回圈展开为普通循序程式218.160.213.240 12/30 14:26
15F:推 pshuang:+改用|吧... |跟+是等价的, 但是快一点 61.224.77.93 12/30 15:37
16F:推 kevin190:这是要问SIMD吗?? 211.74.95.4 12/30 17:36
17F:→ oohay:|与+不等价,|不处理算术进位218.160.214.111 12/30 17:53
18F:推 x2006:答案应该是 (上底+下底)*高/2 220.132.6.159 12/30 19:49
19F:→ x2006:可是好像不能用数学公式 = =" 220.132.6.159 12/30 19:51
20F:→ LAjacky:用 i += 1 应该会比较快 125.229.24.198 12/30 20:03
21F:→ LAjacky:i++ 和 ++i 都比较慢些 125.229.24.198 12/30 20:03
22F:推 WPC001:loop unroll吧... 另外应该改成+=会比较快 123.195.25.91 12/30 20:40
23F:推 FlyinDeath:为什麽改成+=会比较快呢? 134.208.3.20 12/30 20:58
24F:→ FlyinDeath:我印象里面++i是用INC 只要1 cycle 134.208.3.20 12/30 20:58
25F:→ FlyinDeath:+=1的话最後compile出来也是INC吧 134.208.3.20 12/30 22:01
26F:推 dontblame:++i s+=i 218.165.87.197 12/30 23:01
27F:推 FlyinDeath:在基本型别下s=s+i最佳化时会变s+=i 61.231.192.31 12/31 00:44
28F:推 PcGrek:刚刚才在C/C++版推过~ XD 140.124.42.60 12/31 03:20
29F:推 FlyinDeath:哈哈 跟MasterChange讲的一样 61.231.192.31 12/31 10:49
30F:→ FlyinDeath:这题对组合语言不熟真的答不出来 61.231.192.31 12/31 10:49
31F:推 Ross0916:这题是考这个吗 - -" 140.112.5.10 12/31 19:25
32F:→ Ross0916:本来用了 compiler 就不该去预期出来的组 140.112.5.10 12/31 19:25
33F:→ Ross0916:语是什麽吧? 如果这样甘脆用 asm{} 算了? 140.112.5.10 12/31 19:26
34F:推 oohay:应该这麽说,看各人情况;如果所做最佳化动作218.160.111.210 12/31 19:50
35F:→ oohay:在不做的情况只用编译参数最佳化即可达成,218.160.111.210 12/31 19:52
36F:→ oohay:不如不要谈那麽多了218.160.111.210 12/31 19:52
37F:→ oohay:该谈的是在编译参数调整不到的地方,讨论程式218.160.111.210 12/31 19:54
38F:→ oohay:这样写比那样写好,才有意义218.160.111.210 12/31 19:54
39F:推 Ross0916:同意楼上的 140.112.5.10 12/31 21:49
40F:推 yun224:除了公式解,其实没有真正的好方法... 218.166.74.83 01/01 01:43
41F:→ yun224:就算改用内嵌asm..也不一定比compiler好啊 218.166.74.83 01/01 01:46
42F:→ WPC001:++i与i++, 如果i是整数且单独运算的话 123.195.25.91 01/01 08:50
43F:→ WPC001:是完全一模一样的东西... 123.195.25.91 01/01 08:51
44F:→ WPC001:complier针对P5/P6优化都会变成inc 123.195.25.91 01/01 08:51
45F:→ WPC001:针对P7优化会变成 add xxx,1 123.195.25.91 01/01 08:52
46F:推 MasterChang:谁都知道0~100连加用公式解较快,这 140.132.23.74 01/02 07:00
47F:→ MasterChang:题考的并不是真的0加到100,专注在连 140.132.23.74 01/02 07:01
48F:→ MasterChang:加可能会搞错方向... 140.132.23.74 01/02 07:02
49F:推 yoco315:其实我真的看不出来这个面试官想要问什麽 140.114.78.40 01/02 13:00
50F:推 oohay:就跟你说不能用公式了,答案竟然是用公式 :p 61.231.16.240 01/02 18:20