簡體   English   中英

整數對應使用什么數據結構?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM