【发布时间】:2018-10-20 08:47:21
【问题描述】:
我的理解是 Fortran(90 之前)非常快,部分原因是它不允许指针别名(因此允许更好的编译器优化)。但是,我也知道 C 系列语言中的指针允许程序员编写极快的代码。
我不明白为什么这两种语言会因为相反的原因而快速。任何人都可以了解发生了什么吗?
提前致谢。
【问题讨论】:
-
请参阅非常相关的问题stackoverflow.com/q/146159/2737715。我很想把这个作为副本关闭。
-
两种语言都快的原因是抽象级别低——这意味着“未知”数据结构或内存管理的开销为零。指针别名是处理优化编译器无法为缓存变量做出某些决定的一个小问题。
-
您无法比较语言的速度。一种语言的程序没有速度。只有特定的编译器或解释器有。我会反对重复关闭的诱惑。另一个问题是关于这种差异的,并且包含许多可供选择的答案,通常来自对 Fortran 不太了解的人。 (而且我不得不对其中许多人投反对票。)
-
将 20 年前的 C 与 30 年前的 Fortran 进行比较似乎毫无意义。 C 的某种专有方言保留了一些旧的限制,但无论您真正关心的是什么,这似乎都是次要的。
-
我认为这是一个合理的问题,因为如果真的有这样的事情,它会引出一个“正确的问题”。诚然,在过去十年左右的时间里,SO 上也有类似的帖子,但每个帖子都为讨论增添了一些内容。无论如何,对于我们这些还不知道“答案”的人来说,这很有趣,正如您从高观看次数中看到的那样。
标签: c performance pointers fortran fortran77