gfortran函数内联
求助各位大神,fortran里边怎么指定函数内联,以及如何确定它确实被内联了?我用的编译器是gfortran语法里没有 inline,需要在编译时指定相关参数。具体你查一下gfortran的帮助。 f2008标准中submodule可以实现类似内联功能 submodule 和内敛有啥关系? fcode 发表于 2019-4-23 08:01
submodule 和内敛有啥关系?
作为一个编程外行,我倒一直有个事情好奇
如果不传大型矩阵的值的话,内联能提高多少效率呢,调用函数开销会很大吗?
我记得好些编程教材都教导读者,放心大胆用函数,函数调用开销基本可以忽略
这样考虑的话,内联存在的意义是啥…… 基本可以忽略,重点在基本上。
函数调用开销大概有4、5个CPU指令那么多,主要在堆栈指针的整理和局部变量堆栈的腾出。
也取决于参数个数(参数个数越多,开销越大)、函数调用协定(C协定较省、而stdcall之类的稍微多1、2个指令)
如果一次函数调用,内联能提高的效率可以忽略不计。
但如果是很多次的调用,比如对一个大数组的每个元素进行的函数调用。用 elemental 或 inline,提升的效率就比较可观了。 fcode 发表于 2019-4-23 12:39
基本可以忽略,重点在基本上。
函数调用开销大概有4、5个CPU指令那么多,主要在堆栈指针的整理和局部变量堆 ...
原来如此,非常感谢版主的回答
页:
[1]