public virtual void GenerateWriterMethod(Serializer serializer, Type type, ILGenerator il)
        {
            var valueType = type.GetGenericArguments()[0];

            var noValueLabel = il.DefineLabel();

            MethodInfo getHasValue = type.GetProperty("HasValue").GetGetMethod();
            MethodInfo getValue = type.GetProperty("Value").GetGetMethod();

            var data = serializer.GetIndirectData(valueType);

            il.Emit(OpCodes.Ldarg_1);       // Stream
            il.Emit(OpCodes.Ldarga_S, 2);   // &value
            il.Emit(OpCodes.Call, getHasValue);
            il.Emit(OpCodes.Call, serializer.GetDirectWriter(typeof(bool)));

            il.Emit(OpCodes.Ldarga_S, 2);   // &value
            il.Emit(OpCodes.Call, getHasValue);
            il.Emit(OpCodes.Brfalse_S, noValueLabel);

            if (data.WriterNeedsInstance)
                il.Emit(OpCodes.Ldarg_0);   // Serializer
            il.Emit(OpCodes.Ldarg_1);       // Stream
            il.Emit(OpCodes.Ldarga_S, 2);   // &value
            il.Emit(OpCodes.Call, getValue);

            // XXX for some reason Tailcall causes huge slowdown, at least with "decimal?"
            //il.Emit(OpCodes.Tailcall);
            il.Emit(OpCodes.Call, data.WriterMethodInfo);

            il.MarkLabel(noValueLabel);
            il.Emit(OpCodes.Ret);
        }
示例#2
0
        static void Main(string[] args)
        {
            if (ParseArgs(args) == false)
            {
                return;
            }

            if (ShareSerializer)
            {
                s_sharedSerializer = Tester.CreateSerializer();
            }

            List <Thread> threads = new List <Thread>();

            for (int i = 0; i < NumThreads; ++i)
            {
                var thread = new Thread(Test);
                threads.Add(thread);
            }

            foreach (var thread in threads)
            {
                thread.Start();
            }

            foreach (var thread in threads)
            {
                thread.Join();
            }
        }
		public void GenerateWriterMethod(Serializer serializer, Type type, ILGenerator il)
		{
			// arg0: Serializer, arg1: Stream, arg2: value

			var fields = Helpers.GetFieldInfos(type);

			foreach (var field in fields)
			{
				// Note: the user defined value type is not passed as reference. could cause perf problems with big structs

				var fieldType = field.FieldType;

				var data = serializer.GetIndirectData(fieldType);

				if (data.WriterNeedsInstance)
					il.Emit(OpCodes.Ldarg_0);

				il.Emit(OpCodes.Ldarg_1);
				if (type.IsValueType)
					il.Emit(OpCodes.Ldarga_S, 2);
				else
					il.Emit(OpCodes.Ldarg_2);
				il.Emit(OpCodes.Ldfld, field);

				il.Emit(OpCodes.Call, data.WriterMethodInfo);
			}

			il.Emit(OpCodes.Ret);
		}
  private void Initialize()
 {
     if (!JustInitialized) return;
     var typeList = new List<Type> {_primaryType};
     typeList.AddRange(_secondaryTypes);
     _serializer = new Serializer(typeList);
     JustInitialized = false;
 }
示例#5
0
        public Tester(NS.Serializer serializer)
        {
            m_specimens.Add(new NetSerializerSpecimen(serializer));

            if (Program.RunProtoBufTests)
            {
                m_specimens.Add(new ProtobufSpecimen());
            }
        }
示例#6
0
        static void Main(string[] args)
        {
            bool show_help = false;

            var p = new Mono.Options.OptionSet()
            {
                { "q|quick", "quick run", _ => QuickRun = true },
                { "p|protobuf", "run protobuf tests", _ => RunProtoBufTests = true },
                { "v|verify", "verify results", _ => EnableResultCheck = true },
                { "threads=", "number of threads", (int v) => NumThreads = v },
                { "share", "share serializer between threads", _ => ShareSerializer = true },
                { "h|help", "show help", _ => show_help = true },
            };

            List <string> extra;

            try
            {
                extra = p.Parse(args);
            }
            catch (Mono.Options.OptionException e)
            {
                Console.WriteLine(e.Message);
                return;
            }

            if (show_help || extra.Count > 0)
            {
                p.WriteOptionDescriptions(Console.Out);
                return;
            }

            if (ShareSerializer)
            {
                s_sharedSerializer = Tester.CreateSerializer();
            }

            List <Thread> threads = new List <Thread>();

            for (int i = 0; i < NumThreads; ++i)
            {
                var thread = new Thread(Test);
                threads.Add(thread);
            }

            foreach (var thread in threads)
            {
                thread.Start();
            }

            foreach (var thread in threads)
            {
                thread.Join();
            }
        }
		public void GenerateReaderMethod(Serializer serializer, Type type, ILGenerator il)
		{
			// arg0: Serializer, arg1: stream, arg2: out value

			if (type.IsClass)
			{
				// instantiate empty class
				il.Emit(OpCodes.Ldarg_2);

				var gtfh = typeof(Type).GetMethod("GetTypeFromHandle", BindingFlags.Public | BindingFlags.Static);
				var guo = typeof(System.Runtime.Serialization.FormatterServices).GetMethod("GetUninitializedObject", BindingFlags.Public | BindingFlags.Static);
				il.Emit(OpCodes.Ldtoken, type);
				il.Emit(OpCodes.Call, gtfh);
				il.Emit(OpCodes.Call, guo);
				il.Emit(OpCodes.Castclass, type);

				il.Emit(OpCodes.Stind_Ref);
			}

			var fields = Helpers.GetFieldInfos(type);

			foreach (var field in fields)
			{
				var fieldType = field.FieldType;

				var data = serializer.GetIndirectData(fieldType);

				if (data.ReaderNeedsInstance)
					il.Emit(OpCodes.Ldarg_0);

				il.Emit(OpCodes.Ldarg_1);
				il.Emit(OpCodes.Ldarg_2);
				if (type.IsClass)
					il.Emit(OpCodes.Ldind_Ref);
				il.Emit(OpCodes.Ldflda, field);

				il.Emit(OpCodes.Call, data.ReaderMethodInfo);
			}

			if (typeof(System.Runtime.Serialization.IDeserializationCallback).IsAssignableFrom(type))
			{
				var miOnDeserialization = typeof(System.Runtime.Serialization.IDeserializationCallback).GetMethod("OnDeserialization",
										BindingFlags.Instance | BindingFlags.Public,
										null, new[] { typeof(Object) }, null);

				il.Emit(OpCodes.Ldarg_2);
				il.Emit(OpCodes.Ldnull);
				il.Emit(OpCodes.Constrained, type);
				il.Emit(OpCodes.Callvirt, miOnDeserialization);
			}

			il.Emit(OpCodes.Ret);
		}
示例#8
0
 public override void BeforeRuns(Test test)
 {
     try
     {
         m_Serializer = m_KnownTypes==null ? new NetSerializer.Serializer( new Type[]{test.GetPayloadRootType() })
                                           : new NetSerializer.Serializer( new Type[]{test.GetPayloadRootType() }.Concat(m_KnownTypes));
     }
     catch (Exception error)
     {
         test.Abort(this, "Error making NetSerializer instance in serializer BeforeRun() {0}. \n Did you decorate the primary known type correctly?".Args(error.ToMessageWithType()));
     }
 }
示例#9
0
 public override void BeforeRuns(Test test)
 {
     try
     {
         m_Serializer = m_KnownTypes == null ? new NetSerializer.Serializer(new Type[] { test.GetPayloadRootType() })
                                           : new NetSerializer.Serializer(new Type[] { test.GetPayloadRootType() }.Concat(m_KnownTypes));
     }
     catch (Exception error)
     {
         test.Abort(this, "Error making NetSerializer instance in serializer BeforeRun() {0}. \n Did you decorate the primary known type correctly?".Args(error.ToMessageWithType()));
     }
 }
示例#10
0
		public static NS.Serializer CreateSerializer()
		{
			var types = GetKnownTypes().ToArray();

			var sw = Stopwatch.StartNew();
			var serializer = new NS.Serializer(types, new NS.ITypeSerializer[] { new TriDimArrayCustomSerializer() });
			sw.Stop();

			Console.WriteLine("Serializer.Initialize() in {0} ms", sw.ElapsedMilliseconds);

			//NS.Serializer.GenerateDebugAssembly(types, new NS.ITypeSerializer[] { new TriDimArrayCustomSerializer() });

			return serializer;
		}
示例#11
0
        public static NS.Serializer CreateSerializer()
        {
            var types = typeof(MessageBase).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(MessageBase)))
                .Concat(new Type[] { typeof(SimpleClass), typeof(SimpleClass2) })
                .ToArray();

            var sw = Stopwatch.StartNew();
            var serializer = new NS.Serializer(types, new NS.ITypeSerializer[] { new CustomSerializers() });
            sw.Stop();

            Console.WriteLine("Serializer.Initialize() in {0} ms", sw.ElapsedMilliseconds);

            return serializer;
        }
示例#12
0
        public static NS.Serializer CreateSerializer()
        {
            var types = typeof(MessageBase).Assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(MessageBase)))
                        .Concat(new Type[] { typeof(SimpleClass), typeof(SimpleClass2) })
                        .ToArray();

            var sw         = Stopwatch.StartNew();
            var serializer = new NS.Serializer(types, new NS.ITypeSerializer[] { new CustomSerializers() });

            sw.Stop();

            Console.WriteLine("Serializer.Initialize() in {0} ms", sw.ElapsedMilliseconds);

            return(serializer);
        }
示例#13
0
        public static NS.Serializer CreateSerializer()
        {
            var types = GetKnownTypes().ToArray();

            var sw         = Stopwatch.StartNew();
            var serializer = new NS.Serializer(types, new NS.ITypeSerializer[] { new TriDimArrayCustomSerializer() });

            sw.Stop();

            Console.WriteLine("Serializer.Initialize() in {0} ms", sw.ElapsedMilliseconds);

            //NS.Serializer.GenerateDebugAssembly(types, new NS.ITypeSerializer[] { new TriDimArrayCustomSerializer() });

            return(serializer);
        }
示例#14
0
		public static void Deserialize(Serializer serializer, Stream stream, out object ob)
		{
			uint id;

			Primitives.ReadPrimitive(stream, out id);

			if (id == 0)
			{
				ob = null;
				return;
			}

			var del = serializer.GetDeserializeTrampolineFromId(id);
			del(serializer, stream, out ob);
		}
示例#15
0
        static void Main(string[] args)
        {
            if (ParseArgs(args) == false)
            {
                return;
            }

            if (ShareSerializer)
            {
                s_sharedSerializer = Tester.CreateSerializer();
            }

            List <Thread> threads = new List <Thread>();

            for (int i = 0; i < NumThreads; ++i)
            {
                var thread = new Thread(Test);
                threads.Add(thread);
            }

            foreach (var thread in threads)
            {
                thread.Start();
            }

            foreach (var thread in threads)
            {
                thread.Join();
            }

            Console.WriteLine();
            Console.WriteLine("Serialized objects of types:");
            foreach (var type in Tester.SerializedTypes.OrderBy(x => x.FullName))
            {
                Console.WriteLine(type.FullName);
            }

            Console.WriteLine();
            Console.WriteLine("Deserialized objects with type ids:");
            foreach (var id in Tester.DeserializedTypeIds.OrderBy(x => x))
            {
                Console.WriteLine(id);
            }

            Console.ReadKey();
        }
示例#16
0
		public static void Serialize(Serializer serializer, Stream stream, object ob)
		{
			if (ob == null)
			{
				Primitives.WritePrimitive(stream, (uint)0);
				return;
			}

			var type = ob.GetType();

			SerializeDelegate<object> del;

			uint id = serializer.GetTypeIdAndSerializer(type, out del);

			Primitives.WritePrimitive(stream, id);

			del(serializer, stream, ob);
		}
示例#17
0
		static void Main(string[] args)
		{
			if (ShareSerializer)
				s_sharedSerializer = Tester.CreateSerializer();

			List<Thread> threads = new List<Thread>();

			for (int i = 0; i < NumThreads; ++i)
			{
				var thread = new Thread(Test);
				threads.Add(thread);
			}

			foreach (var thread in threads)
				thread.Start();

			foreach (var thread in threads)
				thread.Join();
		}
        public virtual void GenerateReaderMethod(Serializer serializer, Type type, ILGenerator il)
        {
            var valueType = type.GetGenericArguments()[0];

            var hasValueLocal = il.DeclareLocal(typeof(bool));
            var valueLocal = il.DeclareLocal(valueType);

            var notNullLabel = il.DefineLabel();

            var data = serializer.GetIndirectData(valueType);

            // read array len
            il.Emit(OpCodes.Ldarg_1);                   // Stream
            il.Emit(OpCodes.Ldloca_S, hasValueLocal);   // &hasValue
            il.Emit(OpCodes.Call, serializer.GetDirectReader(typeof(bool)));

            // if hasValue == 0, return null
            il.Emit(OpCodes.Ldloc_S, hasValueLocal);
            il.Emit(OpCodes.Brtrue_S, notNullLabel);

            il.Emit(OpCodes.Ldarg_2);       // &value
            il.Emit(OpCodes.Initobj, type);
            il.Emit(OpCodes.Ret);

            // hasValue == 1
            il.MarkLabel(notNullLabel);

            if (data.ReaderNeedsInstance)
                il.Emit(OpCodes.Ldarg_0);   // Serializer
            il.Emit(OpCodes.Ldarg_1);       // Stream
            il.Emit(OpCodes.Ldloca_S, valueLocal);
            il.Emit(OpCodes.Call, data.ReaderMethodInfo);

            il.Emit(OpCodes.Ldarg_2);       // &value

            il.Emit(OpCodes.Ldloc_S, valueLocal);
            var constr = type.GetConstructor(new[] { valueType });
            il.Emit(OpCodes.Newobj, constr);    // new Nullable<T>(valueLocal)

            il.Emit(OpCodes.Stobj, type);       // store to &value

            il.Emit(OpCodes.Ret);
        }
示例#19
0
        public static NS.Serializer CreateSerializer()
        {
            var types = GetKnownTypes().ToArray();

            var sw = Stopwatch.StartNew();

            var settings = new NS.Settings()
            {
                CustomTypeSerializers               = new NS.ITypeSerializer[] { new TriDimArrayCustomSerializer() },
                BeforeSerializingObjectOfType       = type => m_serializedTypes.Add(type),
                BeforeDeserializingObjectWithTypeId = id => m_deserializedTypeIds.Add(id)
            };

            var serializer = new NS.Serializer(types, settings);

            sw.Stop();

            Console.WriteLine("Serializer.Initialize() in {0} ms", sw.ElapsedMilliseconds);

            //NS.Serializer.GenerateDebugAssembly(types, new NS.ITypeSerializer[] { new TriDimArrayCustomSerializer() });

            return(serializer);
        }
示例#20
0
 public static void Serialize(Serializer serializer, Stream stream, object ob)
 {
 }
示例#21
0
        static void Serialize(Serializer serializer, Stream stream, object ob)
        {
            if (ob == null)
            {
                Primitives.WritePrimitive(stream, 0);
                return;
            }

            var type = ob.GetType();

            ushort id;

            if (serializer.m_typeIDMap.TryGetValue(type, out id) == false)
                throw new InvalidOperationException(String.Format("Unknown type {0}", type.FullName));

            Primitives.WritePrimitive(stream, id);

            serializer.m_serializerTrampolines[id](serializer, stream, ob);
        }
示例#22
0
文件: Program.cs 项目: headswe/hqxdmi
        private static string ExtractDMI(string input, string outPath, string file)
        {
            var ser =
                new Serializer(new List<Type> {typeof (DmiImage), typeof (DMIState), typeof (DMIFrame), typeof (DMIImageData)});
            DmiImage dmi = null;
            try
            {
                dmi = new DmiImage(file);
            }
            catch (Exception e)
            {
                _log.Error("Error during extraction",e);
                return null;
            }
            // only parse power of two
            if (!IsPowerOfTwo(dmi.StateHeight) && !IsPowerOfTwo(dmi.StateWidth))
                return null;


            var oPath = Path.Combine(outPath, Path.GetDirectoryName(file.Replace(input + "\\", "")), dmi.DmiName);
            if (!Directory.Exists(oPath))
                Directory.CreateDirectory(oPath);


            using (var stream = File.Create(Path.Combine(oPath, Datafile)))
            {
                ser.Serialize(stream, dmi);
            }


            var stateIndex = 0;
            foreach (var dmiState in dmi.States)
            {
                var statePath = Path.Combine(oPath, stateIndex.ToString());
                if (!Directory.Exists(statePath))
                    Directory.CreateDirectory(statePath);
                int frameIndex = 0;
                foreach (var frame in dmiState.GetFrames())
                {
                    var framePath = Path.Combine(statePath, frameIndex.ToString());
                    if (!Directory.Exists(framePath))
                        Directory.CreateDirectory(framePath);
                    foreach (var image in frame.GetImages())
                    {
                        var imgPath = Path.Combine(framePath, image.Dir + ".png");
                        var bitmap = !use4X ? hqx.HqxSharp.Scale2(image.Bitmap) : hqx.HqxSharp.Scale4(image.Bitmap);
                        bitmap.Save(imgPath);
                    }
                    frameIndex++;
                }
                stateIndex++;
            }
            _log.InfoFormat("Extracted {0}",file);
            return Path.Combine(oPath, Datafile);
        }
示例#23
0
 public NetSerializerSpecimen(NS.Serializer serializer)
 {
     m_serializer = serializer;
 }
示例#24
0
 public Tester(NS.Serializer serializer)
 {
     m_serializer = serializer;
 }
示例#25
0
        public void GenerateReaderMethod(Serializer serializer, Type type, ILGenerator il)
        {
            var elemType = type.GetElementType();

            var lenLocal = il.DeclareLocal(typeof(uint));

            // read array len
            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Ldloca_S, lenLocal);
            il.Emit(OpCodes.Call, serializer.GetDirectReader(typeof(uint)));

            var notNullLabel = il.DefineLabel();

            /* if len == 0, return null */
            il.Emit(OpCodes.Ldloc_S, lenLocal);
            il.Emit(OpCodes.Brtrue_S, notNullLabel);

            il.Emit(OpCodes.Ldarg_2);
            il.Emit(OpCodes.Ldnull);
            il.Emit(OpCodes.Stind_Ref);
            il.Emit(OpCodes.Ret);

            il.MarkLabel(notNullLabel);

            var arrLocal = il.DeclareLocal(type);

            // create new array with len - 1
            il.Emit(OpCodes.Ldloc_S, lenLocal);
            il.Emit(OpCodes.Ldc_I4_1);
            il.Emit(OpCodes.Sub);
            il.Emit(OpCodes.Newarr, elemType);
            il.Emit(OpCodes.Stloc_S, arrLocal);

            // declare i
            var idxLocal = il.DeclareLocal(typeof(int));

            // i = 0
            il.Emit(OpCodes.Ldc_I4_0);
            il.Emit(OpCodes.Stloc_S, idxLocal);

            var loopBodyLabel = il.DefineLabel();
            var loopCheckLabel = il.DefineLabel();

            il.Emit(OpCodes.Br_S, loopCheckLabel);

            // loop body
            il.MarkLabel(loopBodyLabel);

            // read element to arr[i]

            var data = serializer.GetIndirectData(elemType);

            if (data.ReaderNeedsInstance)
                il.Emit(OpCodes.Ldarg_0);

            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Ldloc_S, arrLocal);
            il.Emit(OpCodes.Ldloc_S, idxLocal);
            il.Emit(OpCodes.Ldelema, elemType);

            il.Emit(OpCodes.Call, data.ReaderMethodInfo);

            // i = i + 1
            il.Emit(OpCodes.Ldloc_S, idxLocal);
            il.Emit(OpCodes.Ldc_I4_1);
            il.Emit(OpCodes.Add);
            il.Emit(OpCodes.Stloc_S, idxLocal);

            il.MarkLabel(loopCheckLabel);

            // loop condition
            il.Emit(OpCodes.Ldloc_S, idxLocal);
            il.Emit(OpCodes.Ldloc_S, arrLocal);
            il.Emit(OpCodes.Ldlen);
            il.Emit(OpCodes.Conv_I4);
            il.Emit(OpCodes.Blt_S, loopBodyLabel);

            // store new array to the out value
            il.Emit(OpCodes.Ldarg_2);
            il.Emit(OpCodes.Ldloc_S, arrLocal);
            il.Emit(OpCodes.Stind_Ref);

            il.Emit(OpCodes.Ret);
        }
示例#26
0
    static void Main(string[] args)
    {
        var p = new Person
        {
            Age       = 99999,
            FirstName = "Windows",
            LastName  = "Server",
            Sex       = Sex.Male,
        };

        IList <Person> l = Enumerable.Range(1000, 1000).Select(x => new Person {
            Age = x, FirstName = "Windows", LastName = "Server", Sex = Sex.Female
        }).ToArray();

        var integer = 1;
        //   var v3 = new Vector3 { x = 12345.12345f, y = 3994.35226f, z = 325125.52426f };
        var v3 = new Vector3 {
            x = 12345, y = 3994, z = 325125
        };
        // IList<Vector3> v3List = Enumerable.Range(1, 100).Select(_ => new Vector3 { x = 12345.12345f, y = 3994.35226f, z = 325125.52426f }).ToArray();
        IList <Vector3> v3List = Enumerable.Range(1, 100).Select(_ => new Vector3 {
            x = 12345, y = 3994, z = 325125
        }).ToArray();
        var largeString = File.ReadAllText("CSharpHtml.txt");

        netSerializer = new NetSerializer.Serializer(new[] { p.GetType(), typeof(Person[]), integer.GetType(), v3.GetType(), typeof(Vector3[]), largeString.GetType() });

        Iteration = WarmUpIteration;
        Console.WriteLine("Warming-up"); Console.WriteLine();
        SerializeZeroFormatter(p); SerializeZeroFormatter(l);
        SerializeZeroFormatter(integer); SerializeZeroFormatter(v3); SerializeZeroFormatter(largeString); SerializeZeroFormatter(v3List);
        SerializeProtobuf(p); SerializeProtobuf(l);
        SerializeProtobuf(integer); SerializeProtobuf(v3); SerializeProtobuf(largeString); SerializeProtobuf(v3List);
        SerializeMsgPack(p); SerializeMsgPack(l);
        SerializeMsgPack(integer); SerializeMsgPack(v3); SerializeMsgPack(largeString); SerializeMsgPack(v3List);
        SerializeJsonNet(p); SerializeJsonNet(l);
        SerializeJil(p); SerializeJil(l);
        SerializeFsPickler(p); SerializeFsPickler(l);
        SerializeBinaryFormatter(p); SerializeBinaryFormatter(l);
        SerializeDataContract(p); SerializeDataContract(l);
        SerializeWire(p); SerializeWire(l);
        SerializeWire(integer); SerializeWire(v3); SerializeWire(largeString); SerializeWire(v3List);
        SerializeNetSerializer(p); SerializeNetSerializer((Person[])(object)l);
        SerializeNetSerializer(integer); SerializeNetSerializer(v3); SerializeNetSerializer(largeString); SerializeNetSerializer((Vector3[])(object)v3List);

        SerializeServiceStack(p); SerializeServiceStack((Person[])(object)l);
        SerializeServiceStack(integer); SerializeServiceStack(v3); SerializeServiceStack(largeString); SerializeServiceStack((Vector3[])(object)v3List);

        SerializeZippySerializer(p); SerializeZippySerializer((Person[])(object)l);
        SerializeZippySerializer(integer); SerializeZippySerializer(v3); SerializeZippySerializer(largeString); SerializeZippySerializer((Vector3[])(object)v3List);


        dryRun    = false;
        Iteration = RunIteration;

        Console.WriteLine();
        Console.WriteLine($"Small Object(int,string,string,enum) {Iteration} Iteration"); Console.WriteLine();
        var a  = SerializeZeroFormatter(p); Console.WriteLine();
        var b  = SerializeProtobuf(p); Console.WriteLine();
        var c  = SerializeMsgPack(p); Console.WriteLine();
        var d  = SerializeJsonNet(p); Console.WriteLine();
        var e  = SerializeJil(p); Console.WriteLine();
        var f  = SerializeFsPickler(p); Console.WriteLine();
        var g  = SerializeBinaryFormatter(p); Console.WriteLine();
        var h  = SerializeDataContract(p); Console.WriteLine();
        var k  = SerializeWire(p); Console.WriteLine();
        var l2 = SerializeNetSerializer(p); Console.WriteLine();
        var m  = SerializeZippySerializer(p); Console.WriteLine();

        SerializeServiceStack(p); Console.WriteLine();


        Console.WriteLine($"Large Array(SmallObject[1000]) {Iteration} Iteration"); Console.WriteLine();
        var M = SerializeZippySerializer(l); Console.WriteLine();
        var A = SerializeZeroFormatter(l); Console.WriteLine();
        var B = SerializeProtobuf(l); Console.WriteLine();
        var C = SerializeMsgPack(l); Console.WriteLine();
        var D = SerializeJsonNet(l); Console.WriteLine();
        var E = SerializeJil(l); Console.WriteLine();
        var F = SerializeFsPickler(l); Console.WriteLine();
        var G = SerializeBinaryFormatter(l); Console.WriteLine();
        var H = SerializeDataContract(l); Console.WriteLine();
        var K = SerializeWire(l); Console.WriteLine();
        var L = SerializeNetSerializer((Person[])(object)l); Console.WriteLine();

        SerializeServiceStack((Person[])(object)l); Console.WriteLine();

        //Validate("ZeroFormatter", p, l, a, A);
        //Validate("protobuf-net", p, l, b, B);
        //Validate("MsgPack-CLI", p, l, c, C);
        //Validate("JSON.NET", p, l, d, D);
        //Validate("Jil", p, l, e, E);
        //Validate("FsPickler", p, l, f, F);
        //Validate("BinaryFormatter", p, l, g, G);
        //Validate("DataContract", p, l, h, H);
        //Validate("Wire", p, l, k, K);
        //Validate("NetSerializer", p, l, l2, L);
        //Validate("Zippy", p, l, m, M);

        Console.WriteLine();
        Console.WriteLine("Additional Benchmarks"); Console.WriteLine();

        Console.WriteLine($"Int32(1) {Iteration} Iteration"); Console.WriteLine();

        SerializeZeroFormatter(integer); Console.WriteLine();
        SerializeProtobuf(integer); Console.WriteLine();
        SerializeMsgPack(integer); Console.WriteLine();
        SerializeJsonNet(integer); Console.WriteLine();
        SerializeJil(integer); Console.WriteLine();
        SerializeFsPickler(integer); Console.WriteLine();
        SerializeBinaryFormatter(integer); Console.WriteLine();
        SerializeDataContract(integer); Console.WriteLine();
        SerializeWire(integer); Console.WriteLine();
        SerializeNetSerializer(integer); Console.WriteLine();
        SerializeZippySerializer(integer); Console.WriteLine();
        SerializeServiceStack(integer); Console.WriteLine();

        //var W1 = SerializeZeroFormatter(integer); Console.WriteLine();
        //var W2 = SerializeMsgPack(integer); Console.WriteLine();
        //var W3 = SerializeProtobuf(integer); Console.WriteLine();
        //var W4 = SerializeWire(integer); Console.WriteLine();
        //var W5 = SerializeNetSerializer(integer); Console.WriteLine();
        //var W6 = SerializeZippySerializer(integer); Console.WriteLine();

        Console.WriteLine($"Vector3(float, float, float) {Iteration} Iteration"); Console.WriteLine();

        SerializeZeroFormatter(v3); Console.WriteLine();
        SerializeProtobuf(v3); Console.WriteLine();
        SerializeMsgPack(v3); Console.WriteLine();
        SerializeJsonNet(v3); Console.WriteLine();
        SerializeJil(v3); Console.WriteLine();
        SerializeFsPickler(v3); Console.WriteLine();
        SerializeBinaryFormatter(v3); Console.WriteLine();
        SerializeDataContract(v3); Console.WriteLine();
        SerializeWire(v3); Console.WriteLine();
        SerializeNetSerializer(v3); Console.WriteLine();
        SerializeZippySerializer(v3); Console.WriteLine();
        SerializeServiceStack(v3); Console.WriteLine();

        Console.WriteLine($"HtmlString({Encoding.UTF8.GetByteCount(largeString)}bytes) {Iteration} Iteration"); Console.WriteLine();

        SerializeZeroFormatter(largeString); Console.WriteLine();
        SerializeProtobuf(largeString); Console.WriteLine();
        SerializeMsgPack(largeString); Console.WriteLine();
        SerializeJsonNet(largeString); Console.WriteLine();
        SerializeJil(largeString); Console.WriteLine();
        SerializeFsPickler(largeString); Console.WriteLine();
        SerializeBinaryFormatter(largeString); Console.WriteLine();
        SerializeDataContract(largeString); Console.WriteLine();
        SerializeWire(largeString); Console.WriteLine();
        SerializeNetSerializer(largeString); Console.WriteLine();
        SerializeZippySerializer(largeString); Console.WriteLine();
        SerializeServiceStack(largeString); Console.WriteLine();


        Console.WriteLine($"Vector3[100] {Iteration} Iteration"); Console.WriteLine();
        SerializeZeroFormatter(v3List); Console.WriteLine();
        SerializeProtobuf(v3List); Console.WriteLine();
        SerializeMsgPack(v3List); Console.WriteLine();
        SerializeJsonNet(v3List); Console.WriteLine();
        SerializeJil(v3List); Console.WriteLine();
        SerializeFsPickler(v3List); Console.WriteLine();
        SerializeBinaryFormatter(v3List); Console.WriteLine();
        SerializeDataContract(v3List); Console.WriteLine();
        SerializeWire(v3List); Console.WriteLine();
        //    SerializeNetSerializer(v3List); Console.WriteLine();
        SerializeZippySerializer(v3List); Console.WriteLine();
        SerializeServiceStack(v3List); Console.WriteLine();

        var order1 = Measure.Results.GroupBy(v => v.Key.Split('.')[1]);

        foreach (var data in order1)
        {
            Console.WriteLine();
            Console.BackgroundColor = ConsoleColor.DarkGray;
            Console.WriteLine(data.Key);
            Console.BackgroundColor = ConsoleColor.Black;
            int i = 1;
            foreach (var item in data.OrderBy(v => v.Value))
            {
                if (item.Key.ToLower().Contains("zippy"))
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.White;
                }
                Console.WriteLine(i.ToString() + ") " + item.Key + " : " + item.Value.ToString("#,##0.00"));
                i++;
            }
        }

        Console.WriteLine();
        Console.WriteLine();

        var order = Measure.Results.OrderBy(v => v.Value);

        foreach (var item in order)
        {
            if (item.Key.ToLower().Contains("zippy"))
            {
                Console.ForegroundColor = ConsoleColor.Green;
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.White;
            }
            Console.WriteLine(item.Key + " : " + item.Value.ToString("#,##0.00"));
        }


        //Validate2("ZeroFormatter", W1, integer); Validate2("MsgPack-Cli", W2, integer); Validate2("MsgPack", W3, integer); Validate2("Wire", W4, integer); Validate2("NetSerializer", W5, integer); Validate2("Zippy", W6, integer);
        //Validate2("ZeroFormatter", X1, v3);  Validate2("MsgPack-Cli", X2, v3); Validate2("MsgPack", X3, v3); Validate2("Wire", X4, v3); Validate2("NetSerializer", X5, v3); Validate2("Zippy", X6, v3);
        //Validate2("ZeroFormatter", Y1, largeString); ; Validate2("MsgPack-Cli", Y2, largeString); Validate2("MsgPack", Y3, largeString); Validate2("Wire", Y4, largeString); Validate2("NetSerializer", Y5, largeString); Validate2("Zippy", Y6, largeString);
        //Validate2("ZeroFormatter", Z1, v3List); Validate2("MsgPack-Cli", Z2, v3List); Validate2("MsgPack", Z3, v3List); Validate2("Wire", Z4, v3List); Validate2("NetSerializer", Z5, v3List); Validate2("Zippy", Z6, v3List);

        Console.WriteLine("Press key to exit.");
        Console.ReadLine();
    }
示例#27
0
 public NetTest(NS.Serializer serializer)
 {
     m_serializer = serializer;
 }
示例#28
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NETSerializer"/> class.
 /// </summary>
 /// <param name="serializer">The serializer.</param>
 public NETSerializer(NS.Serializer serializer) {
     _serializer = serializer;
 }
示例#29
0
 public MemStreamTest(NS.Serializer serializer)
 {
     m_serializer = serializer;
 }
示例#30
0
 public static void Deserialize(Serializer serializer, Stream stream, out object ob)
 {
     ob = null;
 }
示例#31
0
    static void Main(string[] args)
    {
        var p = new Person
        {
            Age       = 99999,
            FirstName = "Windows",
            LastName  = "Server",
            Sex       = Sex.Male,
        };
        IList <Person> l = Enumerable.Range(1000, 1000).Select(x => new Person {
            Age = x, FirstName = "Windows", LastName = "Server", Sex = Sex.Female
        }).ToArray();

        var integer = 1;
        var v3      = new Vector3 {
            x = 12345.12345f, y = 3994.35226f, z = 325125.52426f
        };
        IList <Vector3> v3List = Enumerable.Range(1, 100).Select(_ => new Vector3 {
            x = 12345.12345f, y = 3994.35226f, z = 325125.52426f
        }).ToArray();
        var largeString = File.ReadAllText("CSharpHtml.txt");

        netSerializer = new NetSerializer.Serializer(new[] { p.GetType(), typeof(Person[]), integer.GetType(), v3.GetType(), typeof(Vector3[]), largeString.GetType() });

        Console.WriteLine("Warming-up"); Console.WriteLine();
        SerializeZeroFormatter(p); SerializeZeroFormatter(l);
        SerializeZeroFormatter(integer); SerializeZeroFormatter(v3); SerializeZeroFormatter(largeString); SerializeZeroFormatter(v3List);
        SerializeMessagePackCSharp(p); SerializeMessagePackCSharp(l);
        SerializeMessagePackCSharp(integer); SerializeMessagePackCSharp(v3); SerializeMessagePackCSharp(largeString); SerializeMessagePackCSharp(v3List);
        SerializeProtobuf(p); SerializeProtobuf(l);
        SerializeProtobuf(integer); SerializeProtobuf(v3); SerializeProtobuf(largeString); SerializeProtobuf(v3List);
        SerializeMsgPack(p); SerializeMsgPack(l);
        SerializeMsgPack(integer); SerializeMsgPack(v3); SerializeMsgPack(largeString); SerializeMsgPack(v3List);
        SerializeJsonNet(p); SerializeJsonNet(l);
        SerializeJil(p); SerializeJil(l);
        SerializeFsPickler(p); SerializeFsPickler(l);
        SerializeBinaryFormatter(p); SerializeBinaryFormatter(l);
        SerializeDataContract(p); SerializeDataContract(l);
        SerializeSingleFlatBuffers(); SerializeArrayFlatBuffers();
        SerializeSingleProto3(p); SerializeArrayProto3(l);
        SerializeWire(p); SerializeWire(l);
        SerializeWire(integer); SerializeWire(v3); SerializeWire(largeString); SerializeWire(v3List);
        SerializeNetSerializer(p); SerializeNetSerializer((Person[])(object)l);
        SerializeNetSerializer(integer); SerializeNetSerializer(v3); SerializeNetSerializer(largeString); SerializeNetSerializer((Vector3[])(object)v3List);

        dryRun = false;

        Console.WriteLine();
        Console.WriteLine($"Small Object(int,string,string,enum) {Iteration} Iteration"); Console.WriteLine();

        var a  = SerializeZeroFormatter(p); Console.WriteLine();
        var a2 = SerializeMessagePackCSharp(p); Console.WriteLine();
        var b  = SerializeProtobuf(p); Console.WriteLine();
        var c  = SerializeMsgPack(p); Console.WriteLine();
        var d  = SerializeJsonNet(p); Console.WriteLine();
        var e  = SerializeJil(p); Console.WriteLine();
        var f  = SerializeFsPickler(p); Console.WriteLine();
        var g  = SerializeBinaryFormatter(p); Console.WriteLine();
        var h  = SerializeDataContract(p); Console.WriteLine();
        var i  = SerializeSingleFlatBuffers(); Console.WriteLine();
        var j  = SerializeSingleProto3(p); Console.WriteLine();
        var k  = SerializeWire(p); Console.WriteLine();
        var l2 = SerializeNetSerializer(p); Console.WriteLine();

        Console.WriteLine($"Large Array(SmallObject[1000]) {Iteration} Iteration"); Console.WriteLine();

        var A  = SerializeZeroFormatter(l); Console.WriteLine();
        var A2 = SerializeMessagePackCSharp(l); Console.WriteLine();
        var B  = SerializeProtobuf(l); Console.WriteLine();
        var C  = SerializeMsgPack(l); Console.WriteLine();
        var D  = SerializeJsonNet(l); Console.WriteLine();
        var E  = SerializeJil(l); Console.WriteLine();
        var F  = SerializeFsPickler(l); Console.WriteLine();
        var G  = SerializeBinaryFormatter(l); Console.WriteLine();
        var H  = SerializeDataContract(l); Console.WriteLine();
        var I  = SerializeArrayFlatBuffers(); Console.WriteLine();
        var J  = SerializeArrayProto3(l); Console.WriteLine();
        var K  = SerializeWire(l); Console.WriteLine();
        var L  = SerializeNetSerializer((Person[])(object)l);

        Validate("ZeroFormatter", p, l, a, A);
        Validate("MessagePack C#", p, l, a2, A2);
        Validate("protobuf-net", p, l, b, B);
        Validate("MsgPack-CLI", p, l, c, C);
        Validate("JSON.NET", p, l, d, D);
        Validate("Jil", p, l, e, E);
        Validate("FsPickler", p, l, f, F);
        Validate("BinaryFormatter", p, l, g, G);
        Validate("DataContract", p, l, h, H);
        ValidateFlatBuffers(p, l, i, I);
        ValidateProto3(p, l, j, J);
        Validate("Wire", p, l, k, K);
        Validate("NetSerializer", p, l, l2, L);

        Console.WriteLine();
        Console.WriteLine("Additional Benchmarks"); Console.WriteLine();

        Console.WriteLine($"Int32(1) {Iteration} Iteration"); Console.WriteLine();

        var W1 = SerializeZeroFormatter(integer); Console.WriteLine();
        var W0 = SerializeMessagePackCSharp(integer); Console.WriteLine();
        var W2 = SerializeMsgPack(integer); Console.WriteLine();
        var W3 = SerializeProtobuf(integer); Console.WriteLine();
        var W4 = SerializeWire(integer); Console.WriteLine();
        var W5 = SerializeNetSerializer(integer); Console.WriteLine();

        Console.WriteLine($"Vector3(float, float, float) {Iteration} Iteration"); Console.WriteLine();

        var X1 = SerializeZeroFormatter(v3); Console.WriteLine();
        var X0 = SerializeMessagePackCSharp(v3); Console.WriteLine();
        var X2 = SerializeMsgPack(v3); Console.WriteLine();
        var X3 = SerializeProtobuf(v3); Console.WriteLine();
        var X4 = SerializeWire(v3); Console.WriteLine();
        var X5 = SerializeNetSerializer(v3); Console.WriteLine();

        Console.WriteLine($"HtmlString({Encoding.UTF8.GetByteCount(largeString)}bytes) {Iteration} Iteration"); Console.WriteLine();

        var Y1 = SerializeZeroFormatter(largeString); Console.WriteLine();
        var Y0 = SerializeMessagePackCSharp(largeString); Console.WriteLine();
        var Y2 = SerializeMsgPack(largeString); Console.WriteLine();
        var Y3 = SerializeProtobuf(largeString); Console.WriteLine();
        var Y4 = SerializeWire(largeString); Console.WriteLine();
        var Y5 = SerializeNetSerializer(largeString); Console.WriteLine();

        Console.WriteLine($"Vector3[100] {Iteration} Iteration"); Console.WriteLine();

        var Z1 = SerializeZeroFormatter(v3List); Console.WriteLine();
        var Z0 = SerializeMessagePackCSharp(v3List); Console.WriteLine();
        var Z2 = SerializeMsgPack(v3List); Console.WriteLine();
        var Z3 = SerializeProtobuf(v3List); Console.WriteLine();
        var Z4 = SerializeWire(v3List); Console.WriteLine();
        var Z5 = SerializeNetSerializer((Vector3[])(object)v3List); Console.WriteLine();

        Validate2("ZeroFormatter", W1, integer); Validate2("MessagePack C#", W0, integer); Validate2("MsgPack-Cli", W2, integer); Validate2("MsgPack", W3, integer); Validate2("Wire", W4, integer); Validate2("NetSerializer", W5, integer);
        Validate2("ZeroFormatter", X1, v3); Validate2("MessagePack C#", X0, v3); Validate2("MsgPack-Cli", X2, v3); Validate2("MsgPack", X3, v3); Validate2("Wire", X4, v3); Validate2("NetSerializer", X5, v3);
        Validate2("ZeroFormatter", Y1, largeString); Validate2("MessagePack C#", Y0, largeString); Validate2("MsgPack-Cli", Y2, largeString); Validate2("MsgPack", Y3, largeString); Validate2("Wire", Y4, largeString); Validate2("NetSerializer", Y5, largeString);
        Validate2("ZeroFormatter", Z1, v3List); Validate2("MessagePack C#", Z0, v3List); Validate2("MsgPack-Cli", Z2, v3List); Validate2("MsgPack", Z3, v3List); Validate2("Wire", Z4, v3List); Validate2("NetSerializer", Z5, v3List);

        Console.WriteLine("Press key to exit.");
        Console.ReadLine();
    }
示例#32
0
        public void GenerateWriterMethod(Serializer serializer, Type type, ILGenerator il)
        {
            var elemType = type.GetElementType();

            var notNullLabel = il.DefineLabel();

            il.Emit(OpCodes.Ldarg_2);
            il.Emit(OpCodes.Brtrue_S, notNullLabel);

            // if value == null, write 0
            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Ldc_I4_0);
            //il.Emit(OpCodes.Tailcall);
            il.Emit(OpCodes.Call, serializer.GetDirectWriter(typeof(uint)));
            il.Emit(OpCodes.Ret);

            il.MarkLabel(notNullLabel);

            // write array len + 1
            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Ldarg_2);
            il.Emit(OpCodes.Ldlen);
            il.Emit(OpCodes.Ldc_I4_1);
            il.Emit(OpCodes.Add);
            il.Emit(OpCodes.Call, serializer.GetDirectWriter(typeof(uint)));

            // declare i
            var idxLocal = il.DeclareLocal(typeof(int));

            // i = 0
            il.Emit(OpCodes.Ldc_I4_0);
            il.Emit(OpCodes.Stloc_S, idxLocal);

            var loopBodyLabel = il.DefineLabel();
            var loopCheckLabel = il.DefineLabel();

            il.Emit(OpCodes.Br_S, loopCheckLabel);

            // loop body
            il.MarkLabel(loopBodyLabel);

            var data = serializer.GetIndirectData(elemType);

            if (data.WriterNeedsInstance)
                il.Emit(OpCodes.Ldarg_0);

            // write element at index i
            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Ldarg_2);
            il.Emit(OpCodes.Ldloc_S, idxLocal);
            il.Emit(OpCodes.Ldelem, elemType);

            il.Emit(OpCodes.Call, data.WriterMethodInfo);

            // i = i + 1
            il.Emit(OpCodes.Ldloc_S, idxLocal);
            il.Emit(OpCodes.Ldc_I4_1);
            il.Emit(OpCodes.Add);
            il.Emit(OpCodes.Stloc_S, idxLocal);

            il.MarkLabel(loopCheckLabel);

            // loop condition
            il.Emit(OpCodes.Ldloc_S, idxLocal);
            il.Emit(OpCodes.Ldarg_2);
            il.Emit(OpCodes.Ldlen);
            il.Emit(OpCodes.Conv_I4);
            il.Emit(OpCodes.Blt_S, loopBodyLabel);

            il.Emit(OpCodes.Ret);
        }
示例#33
0
		public MemStreamTest(NS.Serializer serializer)
		{
			m_serializer = serializer;
		}
示例#34
0
 public Tester()
 {
     m_serializer = CreateSerializer();
 }
示例#35
0
 public Tester(NS.Serializer serializer)
 {
     m_serializer = serializer;
 }
示例#36
0
        public void GenerateWriterMethod(Serializer serializer, Type type, ILGenerator il)
        {
            // arg0: Serializer, arg1: Stream, arg2: value

            if (serializer.Settings.SupportSerializationCallbacks)
            {
                foreach (var m in GetMethodsWithAttributes(type, typeof(System.Runtime.Serialization.OnSerializingAttribute)))
                    EmitCallToSerializingCallback(type, il, m);
            }

            var fields = Helpers.GetFieldInfos(type);

            foreach (var field in fields)
            {
                // Note: the user defined value type is not passed as reference. could cause perf problems with big structs

                var fieldType = field.FieldType;

                var data = serializer.GetIndirectData(fieldType);

                if (data.WriterNeedsInstance)
                    il.Emit(OpCodes.Ldarg_0);

                il.Emit(OpCodes.Ldarg_1);
                if (type.IsValueType)
                    il.Emit(OpCodes.Ldarga_S, 2);
                else
                    il.Emit(OpCodes.Ldarg_2);
                il.Emit(OpCodes.Ldfld, field);

                il.Emit(OpCodes.Call, data.WriterMethodInfo);
            }

            if (serializer.Settings.SupportSerializationCallbacks)
            {
                foreach (var m in GetMethodsWithAttributes(type, typeof(System.Runtime.Serialization.OnSerializedAttribute)))
                    EmitCallToSerializingCallback(type, il, m);
            }

            il.Emit(OpCodes.Ret);
        }
示例#37
0
 public Tester()
 {
     m_serializer = CreateSerializer();
 }
示例#38
0
文件: Program.cs 项目: headswe/hqxdmi
        private static void Rebuild(string file, string outPath)
        {
            var ser =
                new Serializer(new List<Type>
                {
                    typeof (DmiImage),
                    typeof (DMIState),
                    typeof (DMIFrame),
                    typeof (DMIImageData)
                });

            var path = Path.GetDirectoryName(file);
            var relPath = path.Replace((outPath+"\\raw"), "");
            if (relPath.StartsWith("\\"))
                relPath = relPath.Substring(1);
            DmiImage dmi = null;

            try
            {
                using (var stream = File.OpenRead(file))
                {
                    dmi = (DmiImage)ser.Deserialize(stream);
                }
            }
            catch (Exception e)
            {
                _log.Error("Error during rebuild",e);
                throw;
            }
            if (!use4X)
            {
                dmi.StateHeight = dmi.StateHeight*2;
                dmi.StateWidth = dmi.StateWidth*2;
            }
            else
            {
                dmi.StateHeight = dmi.StateHeight * 4;
                dmi.StateWidth = dmi.StateWidth * 4;
            }
            var stateIndex = 0;
            foreach (var state in dmi.States)
            {
                var statePath = Path.Combine(path, stateIndex.ToString());
                var frameIndex = 0;
                foreach (var frame in state.GetFrames())
                {
                    var framePath = Path.Combine(statePath, frameIndex.ToString());
                    foreach (var image in frame.GetImages())
                    {
                        var imagePath = Path.Combine(framePath, image.Dir.ToString() + ".png");
                        if(File.Exists(imagePath))
                            image.Bitmap = new Bitmap(imagePath);
                        else
                        {
                            Console.WriteLine("File {0} not found!",imagePath);
                        }
                    }
                    frameIndex++;
                }
                stateIndex++;
            }
            DmiImage.Create(dmi, Path.Combine(outPath, "processed", relPath + ".dmi"));
        }
示例#39
0
    // Start is called before the first frame update
    void Start()
    {
        var stream = new MemoryStream();
        var set    = new Set();

        for (int i = 0; i < 10; i++)
        {
            set.set.Add(new No1());
            set.set.Add(new No2());
        }

        List <Type> types = new List <Type>();

        types.Add(typeof(No1));
        types.Add(typeof(No2));
        types.Add(typeof(Set));
        var sw = Stopwatch.StartNew();

        BinaryFormatter b = new BinaryFormatter();

        stream = new MemoryStream();
        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            stream.Seek(0, SeekOrigin.Begin);
            b.Serialize(stream, set);
        }
        sw.Stop();
        Debug.LogFormat("BinaryFormatter Writing {0} ms", sw.ElapsedMilliseconds);

        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            stream.Seek(0, SeekOrigin.Begin);
            var newobj = b.Deserialize(stream);
        }
        sw.Stop();
        Debug.LogFormat("BinaryFormatter Reading {0} ms", sw.ElapsedMilliseconds);

        byte[] bytes = null;
        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            bytes = SerializationUtility.SerializeValue <Set>(set, DataFormat.Binary);
        }
        sw.Stop();
        Debug.LogFormat("OdinSerializer Writing {0} ms", sw.ElapsedMilliseconds);

        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            Set newset = SerializationUtility.DeserializeValue <Set>(bytes, DataFormat.Binary);
        }
        sw.Stop();
        Debug.LogFormat("OdinSerializer Reading {0} ms", sw.ElapsedMilliseconds);


        string str = "";

        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            str = JsonUtility.ToJson(set, true);
        }
        sw.Stop();
        Debug.LogFormat("JsonUtility Writing {0} ms", sw.ElapsedMilliseconds);


        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            Set newSet = JsonUtility.FromJson <Set>(str);
        }
        sw.Stop();
        Debug.LogFormat("JsonUtility Reading {0} ms", sw.ElapsedMilliseconds);

#if !ENABLE_IL2CPP
        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            bytes = MessagePack.MessagePackSerializer.Serialize <Set>(set);
        }
        sw.Stop();
        Debug.LogFormat("MessagePack Writing {0} ms", sw.ElapsedMilliseconds);

        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            Set newSet = MessagePack.MessagePackSerializer.Deserialize <Set>(bytes);
        }
        sw.Stop();
        Debug.LogFormat("MessagePack Reading {0} ms", sw.ElapsedMilliseconds);

        var ser = new NetSerializer.Serializer(types);
        stream = new MemoryStream();
        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            stream.Seek(0, SeekOrigin.Begin);
            ser.Serialize(stream, set);
        }
        sw.Stop();
        Debug.LogFormat("NetSerializer Writing {0} ms", sw.ElapsedMilliseconds);


        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            stream.Seek(0, SeekOrigin.Begin);
            var newobj = ser.Deserialize(stream);
        }
        sw.Stop();
        Debug.LogFormat("NetSerializer Reading {0} ms", sw.ElapsedMilliseconds);

        str = "";
        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            str = JsonConvert.SerializeObject(set);
        }
        sw.Stop();
        Debug.LogFormat("Newtonsoft.Json Writing {0} ms", sw.ElapsedMilliseconds);


        sw.Restart();
        for (int i = 0; i < 1000; i++)
        {
            Set newset = JsonConvert.DeserializeObject <Set>(str);
        }
        sw.Stop();
        Debug.LogFormat("Newtonsoft.Json Reading {0} ms", sw.ElapsedMilliseconds);
#endif
        Console.ReadLine();
    }
示例#40
0
 public NetTest(NS.Serializer serializer)
 {
     m_serializer = serializer;
 }
示例#41
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NETSerializer"/> class.
 /// </summary>
 /// <param name="serializer">The serializer.</param>
 public NETSerializer(NS.Serializer serializer)
 {
     _serializer = serializer;
 }
示例#42
0
        static void Deserialize(Serializer serializer, Stream stream, out object ob)
        {
            ushort id;

            Primitives.ReadPrimitive(stream, out id);

            if (id == 0)
            {
                ob = null;
                return;
            }

            serializer.m_deserializerTrampolines[id](serializer, stream, out ob);
        }
示例#43
-1
        static void Main(string[] args)
        {
            bool show_help = false;

            var p = new Mono.Options.OptionSet() {
                { "q|quick", "quick run", _ => QuickRun = true },
                { "p|protobuf", "run protobuf tests", _ => RunProtoBufTests = true },
                { "v|verify", "verify results", _ => EnableResultCheck = true },
                { "threads=", "number of threads", (int v) => NumThreads = v },
                { "share", "share serializer between threads", _ => ShareSerializer = true },
                { "h|help",  "show help", _ => show_help = true },
            };

            List<string> extra;

            try
            {
                extra = p.Parse(args);
            }
            catch (Mono.Options.OptionException e)
            {
                Console.WriteLine(e.Message);
                return;
            }

            if (show_help || extra.Count > 0)
            {
                p.WriteOptionDescriptions(Console.Out);
                return;
            }

            if (ShareSerializer)
                s_sharedSerializer = Tester.CreateSerializer();

            List<Thread> threads = new List<Thread>();

            for (int i = 0; i < NumThreads; ++i)
            {
                var thread = new Thread(Test);
                threads.Add(thread);
            }

            foreach (var thread in threads)
                thread.Start();

            foreach (var thread in threads)
                thread.Join();
        }