2012-06-22 70 views
1

我有下面的类:快速保存负荷大数据

public class HPChartGraphPoint 
{ 
    public int Keyword { get; set; } 
    public List<long> Points { get; set; } 

    public HPChartGraphPoint() 
    { 
     Points = new List<long>(); 
    } 


    public string SerializeToString() 
    { 
     var sb = new StringBuilder(); 

     sb.Append(Keyword); 
     sb.Append(":"); 

     for (int i = 0; i < Points.Count; i++) 
     { 
      sb.Append(Points[i]); 
      sb.Append(":"); 
     } 
     return sb.ToString(); 
    } 

    public static HPChartGraphPoint DesirializeFromString(string str) 
    { 
     var splitter = str.Split(new[]{":"},StringSplitOptions.RemoveEmptyEntries) 
     .Select(x => int.Parse(x)).ToArray(); 

     var retPoint = new HPChartGraphPoint(); 

     retPoint.Keyword = splitter[0]; 

     for (int i = 1; i < splitter.Length; i++) 
     { 
      retPoint.Points.Add(splitter[i]); 
     } 

     return retPoint; 
    } 


} 

我需要存储和加载数以百万计的元素集合列表。如何快速和高效地执行内存?

编辑:

这里是代码存储

using (var sw = new StreamWriter(filePath)) 
{ 
       for (int i = 0; i < HPChartGraphPointCollection.Count; i++) 
       { 
        sw.WriteLine(HPChartGraphPointCollection[i].SerializeToString()); 
       } 

} 
+1

您是否测量过大型数据集上代码块的性能?执行时间是多少?哪个时间适合你? – sll

+0

@sll我刚刚开始存储一小时前的数据或东西,它仍然在工作。输出文件大小> 20GB。所以...我想要做得更快。 – Neir0

+0

你是从数据库存储/加载? – c0deNinja

回答

0

二进制格式可能是更紧凑,更易于阅读/解析不是文字。

您可以使用轻量级流包装:BinaryReaderBinaryWriter