同じ抽象型 ( ) から拡張された 2 つの派生型 (child1 と child2) がありtype, abstract :: parent
ます。抽象型には遅延バインド プロシージャがあります。
入力として渡された子のタイプに応じて、何らかの処理 (パフォーマンスが重要) を実行するサブルーチンを呼び出したいと考えています。次の 2 つのオプションが考えられます。
- サブルーチンは
class(parent), intent(inout) :: type_in
を入力として受け取ります。select type (type_in)
子の実装は、コンストラクト内で行われます。 type(child1), intent(inout) :: type_in
1 つは with で、もう1 つは with で、2 つのサブルーチンを作成しtype(child2), intent(inout) :: type_in
、ルーチン名をオーバーロードするための明示的なインターフェイスを提供します。
最初のオプションは、コンパイル時に親の拡張が不明な実装を可能にしますが、私の場合は必要ありません。また、一部のコードのみが子と異なるため、コードの行数も節約できます。
私の質問は次のとおりです。コンパイル時にタイプがわかっている場合、入力をポリモーフィック データとして実装したため、オプション 1 に追加のオーバーヘッドがありますか?