看板 Programming 關於我們 聯絡資訊
※ [本文轉錄自 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
skylight55:可以請問是哪家公司問的嗎? 12/30 13:45
juc:換快一點的clock....哈 開個玩笑 12/30 13:47
poga:++i 12/30 13:49
allstarschh:這是高斯的國小數學老師問的嗎?? @.@ 12/30 13:49
bitspirit:用遞迴?? 12/30 13:50
bxxl:改成迴圈做十次,一圈做十個加法/ 12/30 13:51
asleepme:我講一下可能大家會認真點,MTK 12/30 13:52
asleepme:請問++i跟i++為什麼在速度上會有差? 12/30 13:53
stealk:parallel programming? 12/30 13:53
asleepme:遞迴會更慢吧... 12/30 13:53
purejack:把迴圈展開? 12/30 13:54
asleepme:平行計算喔,我不太懂耶,可以解釋清楚點嗎? 12/30 13:54
asleepme:bxxl這也是滿特別的,我一直覺得他是要加速迴圈效果 12/30 13:55
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.82.90
oohay:基本的加快就是把迴圈展開為普通循序程式218.160.213.240 12/30 14:26
pshuang:+改用|吧... |跟+是等價的, 但是快一點 61.224.77.93 12/30 15:37
kevin190:這是要問SIMD嗎?? 211.74.95.4 12/30 17:36
oohay:|與+不等價,|不處理算術進位218.160.214.111 12/30 17:53
x2006:答案應該是 (上底+下底)*高/2 220.132.6.159 12/30 19:49
x2006:可是好像不能用數學公式 = =" 220.132.6.159 12/30 19:51
LAjacky:用 i += 1 應該會比較快 125.229.24.198 12/30 20:03
LAjacky:i++ 和 ++i 都比較慢些 125.229.24.198 12/30 20:03
WPC001:loop unroll吧... 另外應該改成+=會比較快 123.195.25.91 12/30 20:40
FlyinDeath:為什麼改成+=會比較快呢? 134.208.3.20 12/30 20:58
FlyinDeath:我印象裡面++i是用INC 只要1 cycle 134.208.3.20 12/30 20:58
FlyinDeath:+=1的話最後compile出來也是INC吧 134.208.3.20 12/30 22:01
dontblame:++i s+=i 218.165.87.197 12/30 23:01
FlyinDeath:在基本型別下s=s+i最佳化時會變s+=i 61.231.192.31 12/31 00:44
PcGrek:剛剛才在C/C++版推過~ XD 140.124.42.60 12/31 03:20
FlyinDeath:哈哈 跟MasterChange講的一樣 61.231.192.31 12/31 10:49
FlyinDeath:這題對組合語言不熟真的答不出來 61.231.192.31 12/31 10:49
Ross0916:這題是考這個嗎 - -" 140.112.5.10 12/31 19:25
Ross0916:本來用了 compiler 就不該去預期出來的組 140.112.5.10 12/31 19:25
Ross0916:語是什麼吧? 如果這樣甘脆用 asm{} 算了? 140.112.5.10 12/31 19:26
oohay:應該這麼說,看各人情況;如果所做最佳化動作218.160.111.210 12/31 19:50
oohay:在不做的情況只用編譯參數最佳化即可達成,218.160.111.210 12/31 19:52
oohay:不如不要談那麼多了218.160.111.210 12/31 19:52
oohay:該談的是在編譯參數調整不到的地方,討論程式218.160.111.210 12/31 19:54
oohay:這樣寫比那樣寫好,才有意義218.160.111.210 12/31 19:54
Ross0916:同意樓上的 140.112.5.10 12/31 21:49
yun224:除了公式解,其實沒有真正的好方法... 218.166.74.83 01/01 01:43
yun224:就算改用內嵌asm..也不一定比compiler好啊 218.166.74.83 01/01 01:46
WPC001:++i與i++, 如果i是整數且單獨運算的話 123.195.25.91 01/01 08:50
WPC001:是完全一模一樣的東西... 123.195.25.91 01/01 08:51
WPC001:complier針對P5/P6優化都會變成inc 123.195.25.91 01/01 08:51
WPC001:針對P7優化會變成 add xxx,1 123.195.25.91 01/01 08:52
MasterChang:誰都知道0~100連加用公式解較快,這 140.132.23.74 01/02 07:00
MasterChang:題考的並不是真的0加到100,專注在連 140.132.23.74 01/02 07:01
MasterChang:加可能會搞錯方向... 140.132.23.74 01/02 07:02
yoco315:其實我真的看不出來這個面試官想要問什麼 140.114.78.40 01/02 13:00
oohay:就跟你說不能用公式了,答案竟然是用公式 :p 61.231.16.240 01/02 18:20