我有很多数据需要在应用程序运行时存储、读取和修改。这些数据可以比作一棵树,每个节点由有限数量的字符串和整数描述,并且有很多子元素。 目前,这些数据是使用类/对象来存储的,例如:
TRootElement = class
fName, fDescription: string;
fPos: integer;
/// etc
end;
fDocs: TObjectList; //list of TVariable = class(TRootElement)
fClasses: TObjectList; // list of TClass=class(TRootElement)
目前程序消耗的内存是无法接受的,因此我正在寻找限制它的解决方案。
我的问题是:如果我用基于记录的架构替换当前的OOP和基于对象的架构,内存消耗会显著降低吗?例如,通用记录可以包含以下内容:
TRootElement = record
fType: TElemType; // enum: root, variable, class, etc ...
fName, fDesc: string;
// all the fields used by root elem and it's descendants there
end;
我应该将TList替换为指向下一个/上一个元素的指针吗?由于我从未通过索引访问列表中的元素,而是始终循环遍历整个列表,所以这不应该太难... 但是如果没有必要,我想避免这样做。
谢谢! m.