【发布时间】:2011-01-20 01:58:17
【问题描述】:
我正在创建一个缓存,它将包含 Delphi 2007 中的记录。
每条记录包含一个字符串、2 个日期和一个值。
Type MyRecord = Record
Location : String;
Date1 : TDateTime;
Date2 : TDateTime;
Value : Double;
End;
无法保证缓存的最大大小。
Location 很有可能在不同日期有多个条目
只有 13 个地点。
缓存需要可搜索并且处于性能关键位置。
我正在考虑为这个结构创建一个二维数组,并将排序的字符串列表作为索引。因此,当搜索时,我会访问 Stringlist 以在数组中使用名称值对查找我需要的索引。 (位置 = 索引) 然后我需要遍历每个位置的项目,以查看该值是否在缓存中同时匹配 Date1 和 Date2。如果该值不在缓存中,我需要从数据库中获取它并将其添加到缓存中。
类似的东西
Type MyRecord = Record
Date1 : TDateTime;
Date2 : TDateTime;
Value : Double;
End;
...
Cache: Array[1..13] of Array of MyRecord
Locations: TStringList;
因为位置将在字符串列表中。
这是一种用于缓存的有效结构吗?
【问题讨论】:
-
您是从多个线程还是仅一个线程访问 TStringList?如果您从多个线程访问列表,您将需要某种锁定机制(关键部分)来控制谁可以更改列表.. 读取可以由多个线程同时完成
-
能否重命名问题?这并不是真正关于搜索动态数组 - 更多关于搜索缓存或如何使用数据缓存。一个好的问题名称可以帮助人们搜索特定问题/主题的解决方案。
标签: delphi arrays search caching