我已經創建了一個從SortedDictionary繼承一個新的類:應對變化的SortedDictionary
public partial class ListIncomeWeight : SortedDictionary<string, double> {
public Guid Identity { get; set; }
}
此列表與數十個其他列表,在其他列表將跟蹤如果他們合併已經用這個列表計算出來了。爲此,他們使用一個字典存儲結果,如果它之前計算。
身份背後的邏輯是,它將在其他計算中使用時唯一標識列表。這樣,當我重複計算時,我首先檢查GUID,看看我是否已經計算過它。如果是這樣,我已經知道這個計算的結果,並且可以通過不必再次循環這個列表來節省一些時間。 (計算複雜,我需要做很多工作,所以儘管每次計算的計算結果都很小,但它確實節省了時間。)
但是,當我創建列表時,會添加一些項目,計算,再添加一些項目並重新計算?在這種情況下,我不會得到預期的結果,因爲計算從未使用過新項目。所以我需要解決這個問題。
我的想法很簡單:每當添加或刪除項目時更改GUID。當然,我可以重寫添加/刪除方法,但我想要更通用的東西。是否有一些代表或事件可用於響應此列表中的更改?
一些進一步的解釋... 我有兩組列表。一套清單包含了某人收入的概覽。 (薪水,準備金,利息,儲蓄賬戶的利息等)第二組清單爲每種類型的收入定義了權重因子。這是一個規則集,告訴我薪水爲100%,但只規定爲75%等。這些權重列表將在應用權重因子後添加所有內容,從而產生最終金額。
我必須處理來自個人及其伴侶的收入,加上退休前後的收入。加上不依賴退休的收入。因此,我有大約6個人均收入清單。
我也有幾十個重量表。這些被大約1600種不同的產品所使用,最壞的情況是我必須做50萬次計算。我需要減少這個數字,因此我需要很多優化。這只是這些優化的一部分。
一般來說,我需要將收入清單和權重列表結合起來,從而得到一些值。其中一個用於查找,另一個用於計算一個人每年可以花多少錢購買產品的成本,而另一個則是對這個數量的修正。還有一些我需要考慮的收入/重量組合,但總的來說,這取決於計算本身。這個計算也使用了一個利率,這個利率變化很大,儘管它往往在一個短的範圍內。我已經通過計算不同的利率來優化該部分。但是現在我想減少計算這些加權收入所需的計算次數。幸運的是,我應該能夠將計算次數從50萬減少到幾千次,甚至更少。
這就是爲什麼我想知道這個重量列表中的值是否已被添加或刪除。發生這種情況時,它會變成不同的列表,因此它需要一個不同的GUID。我正在研究一個通用的類庫,並且對如何使用它沒有太多的控制,所以我需要確保其他開發人員不能以某種錯誤的方式使用它。這就是爲什麼這個功能是真正有用的原因。
是的,這恰好是我的替代解決方案...... – 2009-09-01 14:56:53