[英]What C# data structure should I use to map a varying number of key/value pairs to a list of strings?
[英]What data structure should I use for integer pairs?
我正在嘗試優化代碼,以加快計算速度並減少內存消耗。 我需要存儲年份和成本數據。 目前,我使用固定數組來保存值。
例如,我將有一個整數數組:
integer[0] = 0,
integer[1] = 200,
integer[2] = 0,
integer[3] = 0,
integer[4] = 200,
integer[5] = 0,
...
integer[99] = 0
其中integer [0] = 0表示在2015年的成本為$ 0,integer [1] = 200表示在2016年的成本為$ 200,依此類推。 由於我將數百萬個這樣的數組保存在內存中並用於計算,因此我想最大程度地減少對內存和性能的影響。
澄清一下,我使用數據的方式是出於圖表目的。 將成本分配給年份后,我會根據它們所屬的對象系列對數組進行匯總。 然后,我將它們顯示在堆積的條形圖中。
有沒有更好的方法來存儲我的數據? 我正在考慮鍵值列表,因此我只存儲非零成本和年份,但是我不知道這是否有很大幫助。
使用Dictionary<int, int>
:
var costs = new Dictionary<int, int> {
{ 2014, 150 },
{ 2016, 200 },
};
它可能不一定會占用更少的內存,但是您可以避免存儲空條目,並且數據的含義更加明顯。
如果(1)您所做的只是求和,(2)不需要對任何給定值的查找訪問權,而只是對其進行迭代,並且(3)您的值確實是稀疏的,
然后像
integer[0] = 200,
integer[1] = 200,
...
結合
year[0] = 2016,
year[1] = 2019,
...
將為您提供最小的內存占用,而不會降低效率。 字典(哈希)會消耗內存; 對於內存占用空間而言,陣列是最經濟的,如果您可以將默認值(0)假定為省略年份,則數組更是如此。 但這僅在不需要查找時才有效,因為使用此結構是O(n)練習。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.