示例#1
0
        private static void RunNormalSerializationWithComplexObject()
        {
            var n = new NormalSerialization();

            n.Serialize(Objects.Root2, typeof(SerializedRoot2));
            Print(n.Serialized);
        }
示例#2
0
        private static void RunNormalSerialization()
        {
            var o = new OuterObject {
                Id = 10, ContainedObject = "Some content", Name = "Hello"
            };
            var n = new NormalSerialization();

            n.Serialize(o, typeof(OuterObject));
            Print(n.Serialized);
        }
        private void RunMeasurements()
        {
            var n = new NormalSerialization();
            var m = new SerializationWithResolverAndNoKnownTypes();
            var p = new SerializationWithKnownTypesInCtor();

            var iterations = 10000;
            var cycles     = 4;

            var sw  = new Stopwatch();
            var ssw = new Stopwatch();
            var dsw = new Stopwatch();

            for (var c = 0; c < cycles; c++)
            {
                sw.Reset();
                ssw.Reset();
                dsw.Reset();
                iterations *= 2;
                sw.Start();
                for (var i = 0; i < iterations; ++i)
                {
                    ssw.Start();
                    n.Serialize(Objects.Root2, typeof(SerializedRoot2));
                    ssw.Stop();
                    dsw.Start();
                    n.Deserialize(Objects.Root2, typeof(SerializedRoot2));
                    dsw.Stop();
                }
                sw.Stop();
                var ms  = sw.ElapsedMilliseconds;
                var sms = ssw.ElapsedMilliseconds;
                var dms = dsw.ElapsedMilliseconds;
                Console.WriteLine("No resolver, cycle {0}, total iterations {1}", c, iterations);
                Console.WriteLine("            total: {0} ms, {1}/s", ms, iterations * 1000.0 / ms);
                Console.WriteLine("    serialization: {0} ms, {1}/s", sms, iterations * 1000.0 / sms);
                Console.WriteLine("  deserialization: {0} ms, {1}/s", dms, iterations * 1000.0 / dms);

                sw.Reset();
                ssw.Reset();
                dsw.Reset();
                sw.Start();
                var cr = new CustomResolverWithNoDeclaredTypes();
                for (var i = 0; i < iterations; ++i)
                {
                    ssw.Start();
                    m.Serialize(Objects.Outer, typeof(SerializedRoot), Objects.Root, cr);
                    ssw.Stop();
                    dsw.Start();
                    m.Deserialize(Objects.Outer, typeof(SerializedRoot), Objects.Root, cr);
                    dsw.Stop();
                }
                sw.Stop();
                ms  = sw.ElapsedMilliseconds;
                sms = ssw.ElapsedMilliseconds;
                dms = dsw.ElapsedMilliseconds;
                Console.WriteLine("With resolver, cycle {0}, total iterations {1}", c, iterations);
                Console.WriteLine("            total: {0} ms, {1}/s", ms, iterations * 1000.0 / ms);
                Console.WriteLine("    serialization: {0} ms, {1}/s", sms, iterations * 1000.0 / sms);
                Console.WriteLine("  deserialization: {0} ms, {1}/s", dms, iterations * 1000.0 / dms);

                sw.Reset();
                ssw.Reset();
                dsw.Reset();
                sw.Start();
                var knownTypes = new[] { typeof(OuterObjectWithInner), typeof(InnerObject) };
                for (var i = 0; i < iterations; ++i)
                {
                    ssw.Start();
                    p.Serialize(Objects.Root, typeof(SerializedRoot), knownTypes);
                    ssw.Stop();
                    dsw.Start();
                    p.Deserialize(Objects.Root, typeof(SerializedRoot), knownTypes);
                    dsw.Stop();
                }
                sw.Stop();
                ms  = sw.ElapsedMilliseconds;
                sms = ssw.ElapsedMilliseconds;
                dms = dsw.ElapsedMilliseconds;
                Console.WriteLine("With inline known types, cycle {0}, total iterations {1}", c, iterations);
                Console.WriteLine("            total: {0} ms, {1}/s", ms, iterations * 1000.0 / ms);
                Console.WriteLine("    serialization: {0} ms, {1}/s", sms, iterations * 1000.0 / sms);
                Console.WriteLine("  deserialization: {0} ms, {1}/s", dms, iterations * 1000.0 / dms);

                Console.WriteLine();
            }
        }