public void DynamicFormatterPerformanceTest() { var DynamicFormatter = new DynamicFormatter <ClassForTest>(); var testEntity = new ClassForTest(); var watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { var buffer = DynamicFormatter.Serialize(testEntity); var testEintity = DynamicFormatter.Deserialize(buffer); } watch.Stop(); Debug.WriteLine($"DynamicSerialize result {watch.ElapsedMilliseconds} ms."); BinaryFormatter binary = new BinaryFormatter(); watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { using (MemoryStream mStream = new MemoryStream()) { binary.Serialize(mStream, testEntity); mStream.Position = 0; var testEintity = binary.Deserialize(mStream); } } watch.Stop(); Debug.WriteLine($"BinarySerializer result {watch.ElapsedMilliseconds} ms."); }
public void CrossReferenceClass() { var entity = new CrossReferenceClass(); var DynamicFormatter = new DynamicFormatter <CrossReferenceClass>(); var buffer = DynamicFormatter.Serialize(entity); var result = DynamicFormatter.Deserialize(buffer); }
public void TestPerfomenceStrongTypeWithMsgPack() { var entity = new StrongStructure(); var serializer = new DynamicFormatter <StrongStructure>(); { var buffer = serializer.Serialize(entity); var result = serializer.Deserialize(buffer); } var watch = Stopwatch.StartNew(); for (int i = 0; i < 1000; i++) { var buffer = serializer.Serialize(entity); var result = serializer.Deserialize(buffer); } watch.Stop(); long ms = watch.ElapsedMilliseconds; { var bin = MessagePackSerializer.Serialize(entity); // Okay to deserialize immutable obejct var point = MessagePackSerializer.Deserialize <StrongStructure>(bin); } var msgPackWatch = Stopwatch.StartNew(); for (int i = 0; i < 1000; i++) { var bin = MessagePackSerializer.Serialize(entity); // Okay to deserialize immutable obejct var point = MessagePackSerializer.Deserialize <StrongStructure>(bin); } msgPackWatch.Stop(); var message = $"StrongTypeFormatter {watch.ElapsedMilliseconds} ms\r\nMessagePackSerializer {msgPackWatch.ElapsedMilliseconds} ms"; Assert.IsTrue(watch.ElapsedTicks < msgPackWatch.ElapsedTicks, message); TestContext.WriteLine(message); }
public void DynamicFormatterNullableEnumNull() { TestEnum?enumVal = null; var DynamicFormatter = new DynamicFormatter <TestEnum?>(); var buffer = DynamicFormatter.Serialize(enumVal); var result = DynamicFormatter.Deserialize(buffer); Assert.AreEqual(enumVal, result); }
public void DynamicFormatterNullableEnum() { TestEnum?enumVal = TestEnum.second; var DynamicFormatter = new DynamicFormatter <TestEnum?>(); var buffer = DynamicFormatter.Serialize(enumVal); var resultTime = DynamicFormatter.Deserialize(buffer); Assert.AreEqual(enumVal, resultTime); }
public void DynamicFormatterNullableWhenNullTest() { Nullable <bool> testEntity = null; var DynamicFormatter = new DynamicFormatter <bool?>(); var buffer = DynamicFormatter.Serialize(testEntity); var resultEntity = DynamicFormatter.Deserialize(buffer); Assert.AreEqual(testEntity, resultEntity); }
public void DynamicFormatterDateTimeTest() { var time = DateTime.Now; var DynamicFormatter = new DynamicFormatter <DateTime>(); var buffer = DynamicFormatter.Serialize(time); var resultTime = DynamicFormatter.Deserialize(buffer); Assert.AreEqual(time, resultTime); }
public void DynamicFormatterStringTest() { var DynamicFormatter = new DynamicFormatter <string>(); var someString = "This is some string"; var stringBytes = DynamicFormatter.Serialize(someString); var someStringCopy = DynamicFormatter.Deserialize(stringBytes); Assert.AreEqual(someString, someStringCopy); }
public void DynamicFormatterStringInClass() { var DynamicFormatter = new DynamicFormatter <ClassWithStrings>(); var testClass = new ClassWithStrings(); var classBytes = DynamicFormatter.Serialize(testClass); var testClassCopy = DynamicFormatter.Deserialize(classBytes); Assert.AreEqual(testClass.someString, testClassCopy.someString); Assert.AreEqual(testClass.secondSomeString, testClassCopy.secondSomeString); }
public void DynamicFormatterGenericDecimal() { var entity = new ChashedObject <decimal>(); entity.Value = 90.1M; var DynamicFormatter = new DynamicFormatter <ChashedObject <decimal> >(); var buffer = DynamicFormatter.Serialize(entity); var result = DynamicFormatter.Deserialize(buffer); Assert.AreEqual(entity.Value, result.Value); }
public void DynamicFormatterNullableStructTest() { TestStruct?testEntity = new TestStruct() { B = 50, G = 10, R = 32 }; var DynamicFormatter = new DynamicFormatter <TestStruct?>(); var buffer = DynamicFormatter.Serialize(testEntity); var resultEntity = DynamicFormatter.Deserialize(buffer); Assert.AreEqual(testEntity, resultEntity); }
public void DynamicFormatterClassWithNullableTest() { var entity = new ClassWithNullable(); entity.intNullable = 31; entity.longNullable = 313; var DynamicFormatter = new DynamicFormatter <ClassWithNullable>(); var buffer = DynamicFormatter.Serialize(entity); var result = DynamicFormatter.Deserialize(buffer); Assert.AreEqual(entity.intNullable, result.intNullable); Assert.AreEqual(entity.longNullable, result.longNullable); Assert.IsTrue(result.boolNulable == null); }
public void DynamicFormatterClassTest() { var DynamicFormatter = new DynamicFormatter <ClassForTest>(); var testEntity = new ClassForTest(); var watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { var buffer = DynamicFormatter.Serialize(testEntity); var testEintity = DynamicFormatter.Deserialize(buffer); } watch.Stop(); Debug.WriteLine($"DynamicSerialize result {watch.ElapsedMilliseconds} ms."); }
public void DynamicFormatterStuctTest() { var DynamicFormatter = new DynamicFormatter <TestStruct>(); var testEntity = new TestStruct() { B = 50, G = 99, R = 1 }; var testEntityBytes = DynamicFormatter.Serialize(testEntity); var testEintityResult = DynamicFormatter.Deserialize(testEntityBytes); Assert.AreEqual(testEntity, testEintityResult); }
public void DynamicFormatterDictionary() { var entity = new Dictionary <int, int>(); entity.Add(10, 9); entity.Add(50, 12); var DynamicFormatter = new DynamicFormatter <Dictionary <int, int> >(); var buffer = DynamicFormatter.Serialize(entity); var result = DynamicFormatter.Deserialize(buffer); foreach (var keyValue in entity) { Assert.AreEqual(keyValue.Value, result[keyValue.Key]); } }
public void AdebugTest() { var entity = new StrongStructure(); var serializer = new DynamicFormatter <StrongStructure>(); var watch = Stopwatch.StartNew(); for (int i = 0; i < 50; i++) { var buffer = serializer.Serialize(entity); var result = serializer.Deserialize(buffer); } watch.Stop(); long ms = watch.ElapsedMilliseconds; }
public void DynamicFormatterGenericInt() { var entity = new int[] { 10, 20, 30 }.ToList(); var DynamicFormatter = new DynamicFormatter <List <int> >(); var buffer = DynamicFormatter.Serialize(entity); var result = DynamicFormatter.Deserialize(buffer); for (int i = 0; i < entity.Count; i++) { Assert.AreEqual(result[i], entity[i]); } }
public void DynamicFormatterDateTimeInClass() { var firstDate = DateTime.Now; var secondDate = DateTime.Now.AddHours(1); var DynamicFormatter = new DynamicFormatter <ClassWithDateTime>(); var testEntity = new ClassWithDateTime() { FirstDate = firstDate, OtherDate = secondDate }; var buffer = DynamicFormatter.Serialize(testEntity); var resultTime = DynamicFormatter.Deserialize(buffer); Assert.AreEqual(testEntity.FirstDate, resultTime.FirstDate); Assert.AreEqual(testEntity.OtherDate, resultTime.OtherDate); }
public void DynamicFormatterGenericClass() { var entity = new ClassWithNullable[] { new ClassWithNullable(), new ClassWithNullable(), new ClassWithNullable() }.ToList(); var DynamicFormatter = new DynamicFormatter <List <ClassWithNullable> >(); var buffer = DynamicFormatter.Serialize(entity); var result = DynamicFormatter.Deserialize(buffer); for (int i = 0; i < entity.Count; i++) { Assert.AreEqual(result[i].longNullable, entity[i].longNullable); } }
public void TestPerfomenceStrongTypeWithProtoBuf() { var entity = new StrongStructure(); var serializer = new DynamicFormatter <StrongStructure>(); var watch = Stopwatch.StartNew(); for (int i = 0; i < 1000; i++) { var buffer = serializer.Serialize(entity); serializer.Deserialize(buffer); } watch.Stop(); long ms = watch.ElapsedMilliseconds; var protoBuf = Stopwatch.StartNew(); { var buffer = ProtoBufHelper.ProtoSerialize(entity); var obj = ProtoBufHelper.ProtoDeserialize <StrongStructure>(buffer); } for (int i = 0; i < 1000; i++) { var buffer = ProtoBufHelper.ProtoSerialize(entity); var obj = ProtoBufHelper.ProtoDeserialize <StrongStructure>(buffer); } protoBuf.Stop(); var message = $"StrongTypeFormatter {watch.ElapsedMilliseconds} ms\r\nprotoBuf {protoBuf.ElapsedMilliseconds} ms"; Assert.IsTrue(watch.ElapsedTicks < protoBuf.ElapsedTicks, message); TestContext.WriteLine(message); }
public static void SerializeTest <T>(T entity, int iterationCount) { Console.WriteLine(); long serilizationResult = 0; long desirilizationResult = 0; int objectSize = 0; var watch = new Stopwatch(); #region dynamicFormatter var dynamicFormatter = new DynamicFormatter <T>(); byte[] dynamicBytes = null; watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { dynamicBytes = dynamicFormatter.Serialize(entity); } watch.Stop(); objectSize = dynamicBytes.Length; serilizationResult = watch.ElapsedMilliseconds; watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { dynamicFormatter.Deserialize(dynamicBytes); } watch.Stop(); desirilizationResult = watch.ElapsedMilliseconds; Console.WriteLine ($"dynamicFormatter deserialize reuslt for {entity.GetType().Name} and {iterationCount} iterations"); Console.WriteLine($"Serilization: {serilizationResult}ms"); Console.WriteLine($"Desirilization: {desirilizationResult}ms"); Console.WriteLine($"Total: {serilizationResult + desirilizationResult}ms"); Console.WriteLine($"Size: {objectSize} bytes."); #endregion dynamicFormatter Console.WriteLine(); #region json try { watch = Stopwatch.StartNew(); string json = string.Empty; for (int i = 0; i < iterationCount; i++) { json = JsonConvert.SerializeObject(entity); } watch.Stop(); serilizationResult = watch.ElapsedMilliseconds; objectSize = Encoding.Default.GetBytes(json).Length; watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { var obj = JsonConvert.DeserializeObject <T>(json); } watch.Stop(); desirilizationResult = watch.ElapsedMilliseconds; Console.WriteLine ($"JsonConvert reuslt for {entity.GetType().Name} and {iterationCount} iterations"); Console.WriteLine($"Serilization: {serilizationResult}ms"); Console.WriteLine($"Desirilization: {desirilizationResult}ms"); Console.WriteLine($"Total: {serilizationResult + desirilizationResult}ms"); Console.WriteLine($"Size: {objectSize} bytes."); } catch (Exception ex) { Console.WriteLine($"Json not supported"); } #endregion json Console.WriteLine(); #region Binary BinaryFormatter formatter = new BinaryFormatter(); watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { using (var mStream = new MemoryStream()) { formatter.Serialize(mStream, entity); } } watch.Stop(); serilizationResult = watch.ElapsedMilliseconds; byte[] binaryBytes = null; { using (var mStream = new MemoryStream()) { formatter.Serialize(mStream, entity); binaryBytes = mStream.ToArray(); } } objectSize = binaryBytes.Length; watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { using (var mStream = new MemoryStream(binaryBytes)) { object obj = formatter.Deserialize(mStream); } } watch.Stop(); desirilizationResult = watch.ElapsedMilliseconds; Console.WriteLine ($"BinaryFormatter reuslt for {entity.GetType().Name} and {iterationCount} iterations"); Console.WriteLine($"Serilization: {serilizationResult}ms"); Console.WriteLine($"Desirilization: {desirilizationResult}ms"); Console.WriteLine($"Total: {serilizationResult + desirilizationResult}ms"); Console.WriteLine($"Size: {objectSize} bytes."); #endregion Binary Console.WriteLine(); #region ZeroFormatterSerializer try { byte[] zeroSerializeBytes = null; watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { zeroSerializeBytes = ZeroFormatterSerializer.Serialize(entity); } watch.Stop(); objectSize = zeroSerializeBytes.Length; serilizationResult = watch.ElapsedMilliseconds; watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { T obj = ZeroFormatterSerializer.Deserialize <T>(zeroSerializeBytes); } watch.Stop(); desirilizationResult = watch.ElapsedMilliseconds; Console.WriteLine ($"ZeroFormatterSerializer reuslt for {entity.GetType().Name} and {iterationCount} iterations"); Console.WriteLine($"Serilization: {serilizationResult}ms"); Console.WriteLine($"Desirilization: {desirilizationResult}ms"); Console.WriteLine($"Total: {serilizationResult + desirilizationResult}ms"); Console.WriteLine($"Size: {objectSize} bytes."); } catch (Exception ex) { Console.WriteLine($"ZeroFormatter not supported this type"); } #endregion ZeroFormatterSerializer Console.WriteLine(); #region ProtoBuf try { byte[] zeroSerializeBytes = null; watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { zeroSerializeBytes = ProtoBufHelper.ProtoSerialize <T>(entity); } watch.Stop(); serilizationResult = watch.ElapsedMilliseconds; objectSize = zeroSerializeBytes.Length; watch = Stopwatch.StartNew(); for (int i = 0; i < iterationCount; i++) { T obj = ProtoBufHelper.ProtoDeserialize <T>(zeroSerializeBytes); } watch.Stop(); desirilizationResult = watch.ElapsedMilliseconds; Console.WriteLine ($"ProtoBuf reuslt for {entity.GetType().Name} and {iterationCount} iterations"); Console.WriteLine($"Serilization: {serilizationResult}ms"); Console.WriteLine($"Desirilization: {desirilizationResult}ms"); Console.WriteLine($"Total: {serilizationResult + desirilizationResult}ms"); Console.WriteLine($"Size: {objectSize} bytes."); } catch (Exception ex) { Console.WriteLine($"ProtoBuf not supported this type"); } #endregion ProtoBuf }