DataTable,IList性能比较
比较序列化的文件大小
using System; using System.Data; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters; using System.Runtime.Serialization.Formatters.Binary; using System.Xml.Serialization; using System.Runtime.Serialization.Json; namespace Test { [Serializable] public class TAcount { public int FID { get; set; } public string FAccount { get; set; } public string FLogonPass { get; set; } public DateTime FRegisterDate { get; set; } public string FLastLogonIP { get; set; } public string FEmail { get; set; } public string FQQ { get; set; } public byte FStatus { get; set; } public int FParentID { get; set; } public int FGradeID { get; set; } public int FCompanyID { get; set; } public bool FIsAgent { get; set; } public decimal FDefaultKickback { get; set; } public int FTotalGeneration { get; set; } } class Program { #region 数据源 private static List<TAcount> GetList(int num) { List<TAcount> list = new List<TAcount>(); for (int i = 0; i < num; i++) { TAcount model = new TAcount() { FID = i, FAccount = "rose" + i.ToString(), FLogonPass = "9a84ee41aa72de59c63006aad670bcce", FRegisterDate = DateTime.Now, FLastLogonIP = "127.0.0.1", FEmail = "330345765@qq.com", FQQ = "330345765" + i.ToString(), FStatus = 1, FParentID = 100 + i, FGradeID = 1, FCompanyID = 3652, FIsAgent = i % 2 == 0 ? true : false, FDefaultKickback = i, FTotalGeneration = i, }; list.Add(model); } return list; } private static DataTable GetDataTable(int num) { DataTable dt = new DataTable(); dt.TableName = "TAcount"; dt.Columns.Add(new DataColumn("FID", typeof(int))); dt.Columns.Add(new DataColumn("FAccount", typeof(string))); dt.Columns.Add(new DataColumn("FLogonPass", typeof(string))); dt.Columns.Add(new DataColumn("FRegisterDate", typeof(DateTime))); dt.Columns.Add(new DataColumn("FLastLogonIP", typeof(string))); dt.Columns.Add(new DataColumn("FEmail", typeof(string))); dt.Columns.Add(new DataColumn("FQQ", typeof(string))); dt.Columns.Add(new DataColumn("FStatus", typeof(byte))); dt.Columns.Add(new DataColumn("FParentID", typeof(int))); dt.Columns.Add(new DataColumn("FGradeID", typeof(int))); dt.Columns.Add(new DataColumn("FCompanyID", typeof(int))); dt.Columns.Add(new DataColumn("FIsAgent", typeof(bool))); dt.Columns.Add(new DataColumn("FDefaultKickback", typeof(decimal))); dt.Columns.Add(new DataColumn("FTotalGeneration", typeof(int))); for (int i = 0; i < num; i++) { var dtRows = dt.NewRow(); dtRows["FID"] = i; dtRows["FAccount"] = "rose" + i.ToString(); dtRows["FLogonPass"] = "9a84ee41aa72de59c63006aad670bcce"; dtRows["FRegisterDate"] = DateTime.Now; dtRows["FLastLogonIP"] = "127.0.0.1"; dtRows["FEmail"] = "330345765@qq.com"; dtRows["FQQ"] = "330345765" + i.ToString(); dtRows["FStatus"] = 1; dtRows["FParentID"] = 100 + i; dtRows["FGradeID"] = 1; dtRows["FCompanyID"] = 3652; dtRows["FIsAgent"] = i % 2 == 0 ? true : false; dtRows["FDefaultKickback"] = i; dtRows["FTotalGeneration"] = i; dt.Rows.Add(dtRows); } return dt; } #endregion /// <summary> /// DataTable,IList性能比较 /// 比较序列化的文件大小 /// </summary> static void Main() { int num = 100; string pathList = @"D:\Serialize\"; string pathDataTable = @"D:\Serialize\"; object list = GetList(num); object dt = GetDataTable(num); try { #region 二进制序列化 BinaryFormatter bin = new BinaryFormatter(); using (FileStream fs = new FileStream(pathList + "binList" + num.ToString() + ".bin", FileMode.Create)) { bin.Serialize(fs, list); fs.Close(); } using (FileStream fs = new FileStream(pathDataTable + "binDataTable" + num.ToString() + ".bin", FileMode.Create)) { bin.Serialize(fs, dt); fs.Close(); } #endregion #region XML序列化 XmlSerializer listXmlSerializer = new XmlSerializer(typeof(List<TAcount>)); XmlSerializer dataTableXmlSerializer = new XmlSerializer(typeof(DataTable)); using (FileStream fs = new FileStream(pathList + "xmlList" + num.ToString() + ".xml", FileMode.Create)) { listXmlSerializer.Serialize(fs, list); fs.Close(); } using (FileStream fs = new FileStream(pathDataTable + "xmlDataTable" + num.ToString() + ".xml", FileMode.Create)) { dataTableXmlSerializer.Serialize(fs, dt); fs.Close(); } #endregion #region Json序列化 DataContractJsonSerializer listJsonSerializer = new DataContractJsonSerializer(typeof(List<TAcount>)); DataContractJsonSerializer dataTableJsonSerializer = new DataContractJsonSerializer(typeof(DataTable)); using (FileStream fs = new FileStream(pathList + "JsonSerializerList" + num.ToString() + ".json", FileMode.Create)) { listJsonSerializer.WriteObject(fs, list); fs.Close(); } using (FileStream fs = new FileStream(pathDataTable + "JsonSerializerDataTable" + num.ToString() + ".json", FileMode.Create)) { dataTableJsonSerializer.WriteObject(fs, dt); fs.Close(); } #endregion } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.WriteLine("序列化完成"); Console.ReadLine(); } } }
20

50

100

1000

10000

100000


浙公网安备 33010602011771号