fortran subroutine_Fortran:派生数组与数组传递进子程序耗费时间比较
在优化程序的过程中发现其中存在大量的派生类型变量(type),同时发现Fortran子程序可以接受type类型数组中元素,即将type类型中元素当作独立的数组传递。传递过程如下所示:
...
为了测试派生类型数组传递的速度,编写如下程序进行对比
module 更改不同的num值可以得到程序耗时结果,

从表格中可以看出传递type数组中元素所耗时间是直接传递数组所需时间的3倍,当然两种数组的大小应该在10000000以上才能体现差别。尽管在传递数组中元素在程序编写上很方便,但是程序中存在需要频繁传递变量的子程序时需要格外的注意。避免传递type数组额外耗时的解决方案:
- 使用module将变量封装在不同模块中,子程序使用不同module来达到传递变量的作用。经过上述的程序可以发现使用type数组类型和使用数组在子程序中的耗时是一致的,说明子程序在传递函数的过程中会将type数组转变为数组,同时在运算之后会传递回去。
- 将type中的元素直接定义为数组,在需要传递数组时直接传递type中数组。在实践的过程中往往需要的是动态数组,如果type中的元素过多,在使用时可能会导致各元素大小不一致,需要额外的检查程序。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
