我正在創建一個緩存,它將包含Delphi 2007中的記錄。Delphi中的高效緩存
每條記錄包含一個字符串,2個日期和一個值。
Type MyRecord = Record
Location : String;
Date1 : TDateTime;
Date2 : TDateTime;
Value : Double;
End;
無法保證緩存的最大大小。
很有可能該位置在不同日期有多個條目
只有13個位置。
緩存需要被搜索,並將在性能關鍵的地方。
我正在考慮爲這個結構創建一個2維數組,並將排序的字符串列表作爲索引。所以當我搜索時,我將訪問Stringlist來查找我需要在名稱值對的數組中使用的索引。 (Location = Index) 然後,我需要循環遍歷每個位置的項目,以查看該值是否在與Date1和Date2匹配的緩存中。如果該值不在緩存中,我需要從數據庫中獲取並將其添加到緩存中。
像
Type MyRecord = Record
Date1 : TDateTime;
Date2 : TDateTime;
Value : Double;
End;
...
Cache: Array[1..13] of Array of MyRecord
Locations: TStringList;
的位置將在字符串列表。
這是一個高效的緩存結構嗎?
你是從幾個線程還是隻訪問一個TStringList?如果您正在從多個線程訪問列表,您將需要某種鎖定機制(關鍵部分)來控制誰可以更改列表。讀取可以通過多個線程同時完成 – 2010-02-23 13:50:52
只是主線程。 – 2010-02-23 14:12:06
你可以重命名這個問題嗎?這不是關於搜索動態數組 - 更關於搜索緩存或如何使用數據緩存。一個好的問題名稱有助於人們尋找解決某個特定問題/主題的方法。 – 2010-02-24 01:31:25