static void Main(string[] args) { Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime; Thread.CurrentThread.Priority = ThreadPriority.Highest; Root r = new Root(); r.X = "DCS"; r.Items = new SerializedClassA[100]; long objCount = 0; for (int i = 0; i < r.Items.Length; i++) { var a = new SerializedClassA(); objCount++; r.Items[i] = a; a.FieldA = GetRandomString(); a.FieldB = GetRandomString(); a.FieldC = GetRandomString(); a.FieldD = GetRandomString(); a.FieldE = GetRandomString(); a.FieldF = GetRandomString(); a.FieldG = GetRandomString(); a.FieldH = GetRandomString(); a.FieldI = GetRandomString(); a.FieldJ = GetRandomString(); a.FieldK = GetRandomString(); a.FieldL = GetRandomStringArray(); a.FieldM = GetRandomStringArray(); a.FieldN = GetRandomStringArray(); a.FieldO = Math.PI; a.FieldP = Math.PI; a.FieldQ = GetRandomDoubleArray(); a.FieldR = GetRandomDoubleArray(); a.FieldS = GetRandomStringArray(); int count = _rng.Next(32) + 1; SerializedClassB[] items = new SerializedClassB[count]; for (int j = 0; j < count; j++) { var item = new SerializedClassB(); objCount++; items[j] = item; item.FieldA = GetRandomString(); item.FieldB = GetRandomString(); item.FieldC = GetRandomString(); item.FieldD = GetRandomString(); item.FieldE = GetRandomStringArray(); //item.FieldH = a; //item.FieldI = a; item.FieldF = new SerializedClassD(); item.FieldF.FieldA = GetRandomStringArray(); //item.FieldF.Hello1 = r.Items; item.FieldG = new SerializedClassE(); item.FieldG.FieldA = GetRandomStringArray(); //item.FieldG.Hello2 = r.Items; } int count2 = _rng.Next(32) + 1; SerializedClassC[] items2 = new SerializedClassC[count2]; for (int j = 0; j < count2; j++) { var item = new SerializedClassC(); objCount++; items2[j] = item; item.FieldA = Math.PI; item.FieldB = Math.PI; item.FieldC = Math.PI; item.FieldD = GetRandomString(); item.FieldE = GetRandomStringArray(); //item.FieldH = a; //item.FieldI = a; item.FieldF = new SerializedClassD(); item.FieldF.FieldA = GetRandomStringArray(); //item.FieldF.Hello1 = r.Items; item.FieldG = new SerializedClassE(); item.FieldG.FieldA = GetRandomStringArray(); //item.FieldG.Hello2 = r.Items; } a.FieldT = items; a.FieldU = items2; } Test(r, "XmlSerializer", Serialize1, DeSerialize1); Test(r, "XmlSerializer-Bin", Serialize2, DeSerialize2); Test(r, "BinaryFormatter", Serialize3, DeSerialize3); Test(r, "SoapFormatter", Serialize4, DeSerialize4); Test(r, "DCS", Serialize5, DeSerialize5); Test(r, "DCS-Bin", Serialize6, DeSerialize6); Test(r, "NDCS", Serialize7, DeSerialize7); Test(r, "NDCS-Bin", Serialize8, DeSerialize8); Test(r, "DCS-Json", Serialize9, DeSerialize9); }
static bool CompareRoots(Root a, Root b) { if (a.Items.Length != b.Items.Length) { return(false); } if (a.X != b.X) { return(false); } for (int i = 0; i < a.Items.Length; i++) { SerializedClassA ca = a.Items[0]; SerializedClassA cb = b.Items[0]; if (ca.FieldA != cb.FieldA) { return(false); } if (ca.FieldB != cb.FieldB) { return(false); } if (ca.FieldC != cb.FieldC) { return(false); } if (ca.FieldD != cb.FieldD) { return(false); } if (ca.FieldE != cb.FieldE) { return(false); } if (ca.FieldF != cb.FieldF) { return(false); } if (ca.FieldG != cb.FieldG) { return(false); } if (ca.FieldH != cb.FieldH) { return(false); } if (ca.FieldI != cb.FieldI) { return(false); } if (ca.FieldJ != cb.FieldJ) { return(false); } if (ca.FieldK != cb.FieldK) { return(false); } if (!CompareStringArrays(ca.FieldL, cb.FieldL)) { return(false); } if (!CompareStringArrays(ca.FieldM, cb.FieldM)) { return(false); } if (!CompareStringArrays(ca.FieldN, cb.FieldN)) { return(false); } if (ca.FieldO != cb.FieldO) { return(false); } if (ca.FieldP != cb.FieldP) { return(false); } if (!CompareDoubleArrays(ca.FieldQ, cb.FieldQ)) { return(false); } if (!CompareDoubleArrays(ca.FieldR, cb.FieldR)) { return(false); } if (!CompareStringArrays(ca.FieldS, cb.FieldS)) { return(false); } if (ca.FieldT.Length != cb.FieldT.Length) { return(false); } for (int j = 0; j < ca.FieldT.Length; j++) { var sba = ca.FieldT[j]; var sbb = ca.FieldT[j]; if (sba.FieldA != sbb.FieldA) { return(false); } if (sba.FieldB != sbb.FieldB) { return(false); } if (sba.FieldC != sbb.FieldC) { return(false); } if (sba.FieldD != sbb.FieldD) { return(false); } if (!CompareStringArrays(sba.FieldE, sbb.FieldE)) { return(false); } if (!CompareStringArrays(sba.FieldF.FieldA, sbb.FieldF.FieldA)) { return(false); } if (!CompareStringArrays(sba.FieldG.FieldA, sbb.FieldG.FieldA)) { return(false); } } } return(true); }