性能:比较切片阵列的记录?

时间:2016-10-17 13:38:57

标签: ada

我有以下记录:

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;

我使用My_Record类型,例如我在数组中存储了8个项目,然后我想要逐个提取项目。

为此,我已经声明了一个函数,它将数组的2个第一项复制到My_Array的子​​类型并递减' Count'然后我切换' Item_Arr':

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

我的问题是:这是正确的方法吗?或者最好循环遍历项目,每次我发现一个项目不同于' Default_Value'我将它添加到输出数组中,依此类推。

就性能而言,比较记录比切割数组更快?

谢谢

1 个答案:

答案 0 :(得分:1)

与问题在于表现时一样,答案是"衡量,衡量,衡量"。

由于Ada在编写时考虑了性能,因此我认为最佳做法是使用我可以提出的最具可读性的实现作为性能测量的参考实现。

在具体的情况下,我会说你的建议可能是最具可读性的实现。

对于性能,一种替代方法是使用循环队列,因此不要移动元素,而是跟踪队列的头部和尾部。