我有以下记录:
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'我将它添加到输出数组中,依此类推。
就性能而言,比较记录比切割数组更快?
谢谢
答案 0 :(得分:1)
与问题在于表现时一样,答案是"衡量,衡量,衡量"。
由于Ada在编写时考虑了性能,因此我认为最佳做法是使用我可以提出的最具可读性的实现作为性能测量的参考实现。
在具体的情况下,我会说你的建议可能是最具可读性的实现。
对于性能,一种替代方法是使用循环队列,因此不要移动元素,而是跟踪队列的头部和尾部。