我正在努力优化我的代码,以加快计算速度并减少内存消耗。我需要存储年份和成本的数据。目前我使用固定数组来保存值。
例如,我会有一个整数数组:
integer[0] = 0,
integer[1] = 200,
integer[2] = 0,
integer[3] = 0,
integer[4] = 200,
integer[5] = 0,
...
integer[99] = 0其中整数=0表示2015年的成本为0美元,integer1 = 200表示2016年的成本为200美元,依此类推。由于我在内存中保存了数百万个这样的数组并用于计算,因此我希望将对内存和性能的影响降至最低。
为了澄清,我使用数据的方式是为了图表目的。一旦我将成本分配给年份,我就会根据它们所属的对象系列对数组进行汇总。然后我将它们显示在堆叠的条形图中。
有没有更好的方法来存储我的数据?我正在考虑键值列表,所以我只存储非零成本和年份,但我不知道这是否会有很大帮助。
发布于 2015-07-30 00:49:27
使用Dictionary<int, int>
var costs = new Dictionary<int, int> {
{ 2014, 150 },
{ 2016, 200 },
};它不一定会占用较少的内存,但可以避免存储空条目,并且数据的含义会更明显一些。
发布于 2015-08-01 02:51:36
如果(1)你所做的只是求和,(2)不需要对任何给定值进行查找,而只是简单地迭代它们,(3)你的值是真正稀疏的,
然后是像这样的东西
integer[0] = 200,
integer[1] = 200,
... 与
year[0] = 2016,
year[1] = 2019,
...将为您提供最小的内存占用,而不会降低效率。字典(散列)会占用内存;对于内存占用而言,数组是最经济的,如果可以假定省略年份的默认值(0),则更是如此。但这只适用于不需要查找的情况,因为对于这种结构,这是O(n)练习。
https://stackoverflow.com/questions/31706449
复制相似问题