0

我想要一个函数接口,根据数组参数的大小来解析要使用的特定过程。例如,我可以有一个程序,用一个过程处理具有少于或正好 N 个元素的向量,用另一个过程处理更长的向量。据我所知,Fortran 仅使用参数的类型、等级和关键字进行解析。这是为什么?编译器是否足够智能以区分不同大小的数组,或者本质上不可能编写一个这样做的编译器?

是否有解决方法来实现所需的功能?我当然知道我可以编写一个带有 if 子句的子例程,以找出哪个过程用于哪个数组大小。但这不会花费更多的CPU时间吗?

4

1 回答 1

3

特定程序的解析被设计成可以在编译时完成。在一般情况下,数组的大小是一个运行时概念。

如果您在编译时知道某个特定过程更适合某些输入,那么您可以直接调用该特定过程。

否则使用 IF 来测试和分支大小(如果语言有这种魔法,那无论如何它都会在幕后做)。无论如何,该测试和分支可能比在运行时调用 reshape 快得​​多。

于 2013-04-03T21:07:00.290 回答