作者gaiger (hallowed be my name)
看板C_and_CPP
標題Re: [問題] 為何公認fortran速度略快於C ?
時間Sat Sep 19 02:41:05 2009
※ 引述《WPC001 ()》之銘言:
: 任何程式花最多時間的應該就是在迴圈內
: 而迴圈內很多時候是在處理向量運算 (如果是複雜的algorithm, C不見得會輸給fortran)
: Fortran原生支援更高階的向量運算...
: compiler在做最佳化時, 優化的程度會比較高...
: 但對於一個好的程式設計師來說, 自己做loop unroll, 自己省掉一些無謂的運算
: 然後自己做prefetch (MMX/SSE), C/C++效能是不會比較差的...
這裡有個問題
寫complier的人 在寫C與fortran complier時,感覺該是差不多的(是C 不是C++)
至少到了中後段差不多吧QQ
後段的優化器,憑什麼對C就是比較差一些些呢
是因為C允許 for迴圈可以放複雜條建所以優化器難搞嗎?
如: for( i=0 ; i<81; printf("%d",i++) )
個人不是資工本科出身,還請釋疑 :D
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.133.77
→ suhorng:說不定前段的差距夠大 ? 這些很難講吧~"~ 09/19 07:52
→ MOONRAKER:最好是差不多啦!雖然在gcc可能差不多(g77前身是f2c) 09/19 10:08
推 Ebergies:這個前面不是有討論, 語法本身的限制導致某些優化不能做 09/19 11:15
推 suhorng:我想還有一個說法是,C的編譯器是不被允許做某些優化的, 09/19 11:17
→ suhorng:因為這些優化或多或少都會變動一些程式執行的邏輯。 09/19 11:17
推 clanguage:C compiler的優化開一開會輸嗎??一般不是都沒開 09/19 11:20
→ MOONRAKER:這個說法是C還沒蓬勃發展的時候流行的。 09/19 13:39
推 shyann:可是我的經驗是C較快... 09/21 00:08
→ MOONRAKER:阿現在C已經蓬勃發展了,有這種結果是當然的。 09/21 10:05