你是否正在寻找关于fortran的内容?让我把最完美的东西奉献给你:
从编译的角度来说,在数值计算程序上,有相同的算法和相似的程序结构,使用了相近的编译器后端和优化参数,如果Fotran编出的代码比C快,那么有两种可能
01 C指针干扰了流优化
指针是很多重要优化的大敌,。 举例说,有种重要优化叫公共子表达式
a=x1+x2+...+x1000000
......
*p = 1
......
b=x1+x2+...+x1000000
上面的程序中,本来编译器看到a和b右边计算的是同一个表达式,且中间并未对x中的任何一个重新赋值,那么就会将后面的赋值改为
b=a
这样节省了一百万次求和运算。
但是中间插入一个指针赋值以后,因为指针有可能指向x中的任何一个,所以这个优化不可以做,仍然要重新把这一百万个变量加一遍
c无法避免指针,尤其是数值计算,因为数组就是用指针来表示的。当把数组作为参数传递给一个函数的时候,在函数里面它实际上是一个“来历不明”的指针
02 是C数组在数据依赖上的信息不明确(持续……)
以上就是关于fortran的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-20251-1.html
我们公司已经拖欠4个月工资了