2016-10-17 6 views
0

私は次のレコードを持っている:パフォーマンス:スライスアレイのレコードを比較しますか?

type Items is 
    record 
     Feature_A : Type_Feature_A; 
     Feature_B : Type_Feature_B; 
     Feature_C : Type_Feature_C; 
     Feature_D : Type_Feature_D; 
    end record; 

type My_Array is array (1 .. 10) of Items; 

type My_Record is 
    record 
     Count : Integer; 
     Item_Arr : My_Array; 
    end record; 

私は例えば、私は、アレイ内の8つの項目を格納し、タイプMy_Recordで働いていたし、私が行うには2

でアイテム2を抽出したいことを、私は2.によってそれから私はスライスmy_arrayで、デクリメント「カウント」の亜型に配列の最初の2つの項目をコピー機能を宣言した「Item_Arr」:

Item_Arr(1..8) := Item_Arr(3..10); 
Item_Arr(9..10) := Default_Value; 

私の質問は:それはへの適切な方法ですそれを行う?または、項目をループする方が良いでしょう。また、「Default_Value」とは異なる項目が見つかった場合は、出力配列に追加しました。

パフォーマンスを比較すると、レコードを比較する方がアレイをスライスする方が速いのですか?

ありがとうございます

+0

配列全体をコピーするのではなく、インデックスを変更してデータをそのまま残して、可変配列スライスを使用する方がよい。 –

答えて

1

いつも質問がパフォーマンスの場合、回答は「対策、対策、対策」です。

Adaはパフォーマンスを念頭に置いて書かれているので、性能測定のためのリファレンス実装として、最も読みやすい実装を使用することをおすすめします。

具体的なケースでは、あなたの提案はおそらく最も読みやすい実装であると言えます。

パフォーマンスを向上させるには、循環キューを使用する方法があります。そのため、要素を移動させるのではなく、キューの先頭と末尾の両方を追跡する必要があります。

関連する問題