Fortran數值計算真的比C快嗎,經測試是一樣快的,是不是很多人都在以訛傳訛?

時間 2021-05-08 15:30:08

1樓:呵呵噠

其實差不多。主要是fortran用的早,都是祖師爺流傳下來的。後輩改成C的時候,很多都沒考慮優化一下,所以會有fortran比c快的錯覺。

2樓:

比較Fortran的效能意義並不太大。 這個語言存在的價值更多的是適合做數值計算和科學計算,愈更簡單,適合工程人員等沒有足夠計算機知識的人去用。 特別是在當年沒有Python這類語言的時候,科技人員用Fortran已經是比較簡單的語言了。

如果不用這個語言,直接用C,你考慮過科技人員因此會浪費多少時間去學習語言嗎?

從效能角度說,效能的優化是很複雜的。即便是同種語言,不同廠家編譯器,甚至相同廠家的編譯器的不同版本編譯出來的程式效能都會有差別。 而且往往差別很大。

例如當年的BorlandC++5.0和Visual C++4.2的效能差別就很顯著。

不同時代的版本差距也很明顯,例如VC14的效能在用math庫的時候效能是要好於VC6的。

所以,如果真需要比較語言的效能(這種需求存在嗎?),需要更複雜的演算法和案例去評估。不要用簡單程式去評估。特別是不要用固定次數的迴圈去增加計算量。。。。

3樓:「已登出」

另外,程式快不快和程式設計師對問題的處理方式和對語言的熟悉程度也有關係,我曾經寫過乙個建結構的程式,前後重構過5次,最後一版的速度比第一版提高了一百多倍,另外我們實驗室也有過乙個同學,用matlab寫出過比實驗室「祖傳」的某fortran程式快幾倍的同樣用途的程式......

4樓:

以前Fortran比較流行的時候,確實是Fortran比C/C++要快,我有同學測過的。

這主要是來自於在數值計算方面,Fortran的編譯器和函式庫多年的優化要比C好,現在應該是都差不多了吧?

5樓:望山

C有一些特點非常不利於向量機的執行,主要是指標可以隨便亂指,然後無聲無息改寫乙個陣列中間的一小塊記憶體。導致一些矩陣運算之類的難以針對向量機硬體進行優化。並不是說兩種語言在x86上執行標量算術計算的效能會有顯著差別。

6樓:科研打工人

其實我基本都用過,現在主要用matlab。個人感覺不是搞軟體開發,速度問題關係不大。如果只是個人科研計算的話,matlab足夠(儘管有人說matlab慢)。

除非你解大型的那種pde方程組,比如ns方程組或者麥克斯韋方程組之類的。

7樓:

Fortran在大部分情況下跟C差不多。

C的主要效能問題是指標別名問題,因為編譯器無法斷定兩個指標不是指向同一塊儲存,有時候編譯器只好不斷地把資料在記憶體和暫存器兩邊拷貝過來拷貝過去。

後來C裡面加了__restrict關鍵字,把分析別名的負擔交給程式設計師,這樣只要程式設計師在必要的時候加__restrict關鍵字,C沒道理效能不如Fortran了。

8樓:昆汀

我不是研究這個的,我只是用。絕大多數時候,差距都體現在別的地方。為什麼把時間浪費在這樣的問題上面?一般我用matlab比較多。

計算機小白一名,發現寫win窗體c 比c 容易很多且美觀,為什麼兩種方式有如此之大的差距?

計算機也是個大學科,如果學機械設計製造及自動化,就知道了工具機也是分車床,銑床 有些可以互相替換,但是效率不高。家裡有電動車 轎車,自行車,卡車,都能帶人去趕集。 沒明白這問題具體是啥意思。現在.net框架的UI庫,比如其他回答有提到的 System.Windows.Forms 的元件都是既可以用C...

計算機真的比晶元微電子好嗎?

匚皛暟 AI晶元應該聽過吧,微電子本身是乙個綜合性比較強的專業,搞人工智慧不僅限於軟體演算法層面,還可以將AI應用於晶元,後者是研究如何開發新的AI演算法,並考慮如何將虛擬的AI演算法對映到現實硬體上,我覺得後者虛實結合比前者單純的研究虛擬演算法更有挑戰性,更有意義,而且在這方面,從晶元方面實現AI...

作為計算機初學者,先學c還是pathon比較好?

Buendia 分場景吧 c偏底層,更複雜一點,如果是個人興趣的話,先學Python更好一點,入門快,反饋也快。科班的話,國內一般都是c,那就先學c吧 最後,無論學什麼,深入的話,都必須要了解底層運作,記憶體管理。 Tworld 人們常說語言決定思維方式,c語言是比較接近底層的語言,因此底層的很多思...