为什么 Fortran 的编译性能要好过 C / C++

如题所述

应该是有几个原因吧。

    Fortran语言的Array Model及其严格的Alias语意(与C++相比). Fortran的Array Model使编译器可以很安全的做一些在C++不能做的优化,而C++的Pointer Alias更是优化中非常难做的一个地方,然而指针却是C++中非常难避免的地方(如动态内存分配),于是Pointer Alias也就很难避免的(然而这个问题在Fortran是不存在的),C99引进的restrict关键字其实可以一定程度上帮助编译器做Pointer Alias工作,所以C99的库很多部分改成了加上restrict关键字,利于编译器优化。另外,Array Model是非常适合编译器做矢量优化(vectorization),编译器可以清晰的知道数据的内存布局,使编译器可以做更好的优化。这点在《C++语言的设计与演化》中,Bjarne提到过矢量优化,也提到过为何Fortran因此而在数值计算中这么好。

    历史原因。 Fortran具有足够长的历史,更是在数值计算中长期占据主要地位。编译器为其做了很多的优化,与此同时,无数的前辈使用Fortran编写了高度优化的数值计算代码,这都是无法忽视的原因,这有些如同C++在游戏编程的情形吧。

求采纳,谢谢!

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-05-23
vc6本身就已经很好用了,在vc6下可以开发出很多很好的程序出来,不在于你所使用的编程环境,关键在于自己的创意和熟练的编程技巧,这些都是外表的东西,最主要是要把自己的基础功打扎实,到时候无论使用什么环境都可以手到擒来。
相似回答