作者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