Beispiel #1
0
        static void Main(string[] args)
        {
            do
            {
                //AOT(NoJIT)模式应该尽量使用属性而非字段
                PropertyData propertyData = AutoCSer.RandomObject.Creator <PropertyData> .Create(randomConfig);

                json(propertyData);
                xml(propertyData);

                //浮点数不仅存在精度问题,而且序列化性能非常低,应该尽量避免使用。特别是.NET Core 的实现,指数越高性能越低。
                FloatPropertyData floatPropertyData = AutoCSer.RandomObject.Creator <FloatPropertyData> .Create(randomConfig);

                json(floatPropertyData);
                xml(floatPropertyData);

                FieldData filedData = AutoCSer.RandomObject.Creator <FieldData> .Create(randomConfig);

                json(filedData);
                xml(filedData);

                //浮点数不仅存在精度问题,而且序列化性能非常低,应该尽量避免使用。特别是.NET Core 的实现,指数越高性能越低。
                FloatFieldData floatFiledData = AutoCSer.RandomObject.Creator <FloatFieldData> .Create(randomConfig);

                json(floatFiledData);
                xml(floatFiledData);

                //AOT(NoJIT)模式尽量不要使用二进制序列化
                //浮点数对二进制序列化无影响
                fieldSerialize(floatFiledData);

                Console.WriteLine(@"Sleep 3000ms
");
                System.Threading.Thread.Sleep(3000);
            }while (true);
        }
Beispiel #2
0
        /// <summary>
        /// XML序列化测试
        /// </summary>
        /// <param name="value"></param>
        private static void xml(FloatFieldData value)
        {
            Console.WriteLine(@"
http://www.AutoCSer.com/Serialize/Xml.html");
            string    xml  = null;
            Stopwatch time = new Stopwatch();

            time.Start();
            for (int index = count; index != 0; --index)
            {
                xml = AutoCSer.Xml.Serializer.Serialize(value);
            }
            time.Stop();
            Console.WriteLine((count / 10000).toString() + "W object + float XML Serialize " + time.ElapsedMilliseconds.toString() + "ms");

            time.Reset();
            time.Start();
            for (int index = count; index != 0; --index)
            {
                value = AutoCSer.Xml.Parser.Parse <FloatFieldData>(xml);
            }
            time.Stop();
            Console.WriteLine((count / 10000).toString() + "W object + float XML Parse " + time.ElapsedMilliseconds.toString() + "ms");
        }
Beispiel #3
0
        /// <summary>
        /// 二进制序列化测试
        /// </summary>
        /// <param name="value"></param>
        private static void fieldSerialize(FloatFieldData value)
        {
            Console.WriteLine(@"
http://www.AutoCSer.com/Serialize/Binary.html");
            byte[]    bytes = null;
            Stopwatch time  = new Stopwatch();

            time.Start();
            for (int index = count; index != 0; --index)
            {
                bytes = AutoCSer.BinarySerialize.Serializer.Serialize(value);
            }
            time.Stop();
            Console.WriteLine((count / 10000).toString() + "W object Binary Serialize " + time.ElapsedMilliseconds.toString() + "ms");

            time.Reset();
            time.Start();
            for (int index = count; index != 0; --index)
            {
                value = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <FloatFieldData>(bytes);
            }
            time.Stop();
            Console.WriteLine((count / 10000).toString() + "W object Binary DeSerialize " + time.ElapsedMilliseconds.toString() + "ms");
        }
Beispiel #4
0
        /// <summary>
        /// JSON序列化测试
        /// </summary>
        /// <param name="value"></param>
        private static void json(FloatFieldData value)
        {
            Console.WriteLine(@"
http://www.AutoCSer.com/Serialize/Json.html");
            string    json = null;
            Stopwatch time = new Stopwatch();

            time.Start();
            for (int index = count; index != 0; --index)
            {
                json = AutoCSer.Json.Serializer.Serialize(value);
            }
            time.Stop();
            Console.WriteLine((count / 10000).toString() + "W object + float " + ((json.Length * count * 2) >> 20).toString() + "MB Field Json Serialize " + time.ElapsedMilliseconds.toString() + "ms");

            time.Reset();
            time.Start();
            for (int index = count; index != 0; --index)
            {
                value = AutoCSer.Json.Parser.Parse <FloatFieldData>(json);
            }
            time.Stop();
            Console.WriteLine((count / 10000).toString() + "W object + float " + ((json.Length * count * 2) >> 20).toString() + "MB Field Json Parse " + time.ElapsedMilliseconds.toString() + "ms");
        }
Beispiel #5
0
        static void Main(string[] args)
        {
#if NOJIT
            int count = 10 * 10000;
#else
            int count = 100 * 10000;
#endif
            bool isJson = true, isJsonThread = true, isXml = false, isBinary = true;
            AutoCSer.RandomObject.Config randomConfig = new AutoCSer.RandomObject.Config {
                IsSecondDateTime = true, IsParseFloat = true
            };
            do
            {
                //AOT(NoJIT)模式应该尽量使用属性而非字段
                PropertyData propertyData = AutoCSer.RandomObject.Creator <PropertyData> .Create(randomConfig);

                if (isJson)
                {
                    json(propertyData, count);
                }
                if (isJsonThread)
                {
                    jsonThread(propertyData, count);
                }
                if (isXml)
                {
                    xml(propertyData, count);
                }

                //浮点数不仅存在精度问题,而且序列化性能非常低,应该尽量避免使用。特别是.NET Core 的实现,指数越高性能越低。
                FloatPropertyData floatPropertyData = AutoCSer.RandomObject.Creator <FloatPropertyData> .Create(randomConfig);

                if (isJson)
                {
                    json(floatPropertyData, count);
                }
                if (isJsonThread)
                {
                    jsonThread(floatPropertyData, count);
                }
                if (isXml)
                {
                    xml(floatPropertyData, count);
                }

                FieldData filedData = AutoCSer.RandomObject.Creator <FieldData> .Create(randomConfig);

                if (isJson)
                {
                    json(filedData, count);
                }
                if (isJsonThread)
                {
                    jsonThread(filedData, count);
                }
                if (isXml)
                {
                    xml(filedData, count);
                }

                //浮点数不仅存在精度问题,而且序列化性能非常低,应该尽量避免使用。特别是.NET Core 的实现,指数越高性能越低。
                FloatFieldData floatFiledData = AutoCSer.RandomObject.Creator <FloatFieldData> .Create(randomConfig);

                if (isJson)
                {
                    json(floatFiledData, count);
                }
                if (isJsonThread)
                {
                    jsonThread(floatFiledData, count);
                }
                if (isXml)
                {
                    xml(floatFiledData, count);
                }

                //AOT(NoJIT)模式尽量不要使用二进制序列化
                //浮点数对二进制序列化无影响
                if (isBinary)
                {
                    fieldSerialize(floatFiledData, count);
                }

                Console.WriteLine(@"Sleep 3000ms
");
                System.Threading.Thread.Sleep(3000);
            }while (true);
        }