Exemplo n.º 1
0
        private static Query DirectSerialize(string xml)
        {
            XDocument doc=XDocument.Parse(xml);

            Query query = new Query();
            query.ReqSign = doc.Descendants("ReqSign").First().Value;

            query.Data = new QueryData();
            query.Data.IsExportQuery = (Int32.Parse((doc.Descendants("IsExportQuery").First().Value)));

            query.Data.QueryPara = new QueryParam();
            query.Data.QueryPara.ContainBillInfo = Int32.Parse(doc.Descendants("ContainBillInfo").First().Value);
            query.Data.QueryPara.EndDate = DateTime.Parse(doc.Descendants("EndDate").First().Value);
            query.Data.QueryPara.EquTypes = doc.Descendants("EquTypes").First().Value;
            query.Data.QueryPara.OrgIDs = doc.Descendants("OrgIDs").First().Value;
            query.Data.QueryPara.PageCount = Int32.Parse(doc.Descendants("PageCount").First().Value);
            query.Data.QueryPara.PageIndex = Int32.Parse(doc.Descendants("PageIndex").First().Value);
            query.Data.QueryPara.StartDate = DateTime.Parse(doc.Descendants("StartDate").First().Value);
            query.Data.QueryPara.State = doc.Descendants("State").First().Value;

            query.Data.QueryPara.BillPara = new BillPara();
            query.Data.QueryPara.BillPara.BillDesc = doc.Descendants("BillDesc").First().Value;
            query.Data.QueryPara.BillPara.BillSerialNum = doc.Descendants("BillSerialNum").First().Value;

            query.Data.BillInfo = new BillInfo();
            query.Data.BillInfo.BillName = doc.Descendants("BillName").First().Value;
            query.Data.BillInfo.BillSerialNum = doc.Descendants("BillSerialNum").First().Value;

            return query;
        }
Exemplo n.º 2
0
        private static void Main()
        {
            //Console.WriteLine(NativeMethodsUtil.IsAnyUserLogon() ? "有用户登陆" : "无用户登陆");

            //ApplicationRuntime.TimelyInfoUpdated += ApplicationRuntime_TimelyInfoUpdated;
            //Console.WriteLine("System start up time: {0}", ApplicationRuntime.StartUpTime);
            //Console.WriteLine("Host name: {0}", ApplicationRuntime.LocalHostName);
            //Console.WriteLine("Host address: {0}", ApplicationRuntime.LocalHostAddress);

            //Console.ReadLine();
            string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
            @"<GetEquipmentrepairInfoReq>
            <ReqSign>safasf-sdf3-sdfsf-3fds</ReqSign>
            <Data>
            <IsExportQuery>1</IsExportQuery>
             <QueryPara>
                <PageCount>1</PageCount>
                <PageIndex>1</PageIndex>
                <OrgIDs></OrgIDs>
                <StartDate>2014-05-10</StartDate>
                <EndDate>2014-05-10</EndDate>
                <State></State>
                <EquTypes></EquTypes>
                <BillPara>
                   <BillSerialNum></BillSerialNum>
                   <BillDesc></BillDesc>
                </BillPara>
                <ContainBillInfo>1</ContainBillInfo>
             </QueryPara>
             <BillInfo>
                    <BillSerialNum></BillSerialNum>
                    <BillName></BillName>
             </BillInfo>
            </Data>
            </GetEquipmentrepairInfoReq>";
            xml = xml.Replace("\r\n", String.Empty);

            TimeSpan total = new TimeSpan();
            for (int i = 0; i < 1000000; i++)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                dynamic dynamicXml = DynamicXml.Parse(xml);

                Query query=new Query();
                query.ReqSign = dynamicXml.ReqSign;

                dynamic data = dynamicXml.Data;
                dynamic queryPara = data.QueryPara;

                query.Data = new QueryData();
                query.Data.IsExportQuery = (Int32.Parse(data.IsExportQuery));

                query.Data.QueryPara = new QueryParam();
                query.Data.QueryPara.ContainBillInfo = Int32.Parse(queryPara.ContainBillInfo);
                query.Data.QueryPara.EndDate = DateTime.Parse(queryPara.EndDate);
                query.Data.QueryPara.EquTypes = queryPara.EquTypes;
                query.Data.QueryPara.OrgIDs = queryPara.OrgIDs;
                query.Data.QueryPara.PageCount = Int32.Parse(queryPara.PageCount);
                query.Data.QueryPara.PageIndex = Int32.Parse(queryPara.PageIndex);
                query.Data.QueryPara.StartDate = DateTime.Parse(queryPara.StartDate);
                query.Data.QueryPara.State = queryPara.State;

                dynamic billPara = queryPara.BillPara;

                query.Data.QueryPara.BillPara = new BillPara();
                query.Data.QueryPara.BillPara.BillDesc = billPara.BillDesc;
                query.Data.QueryPara.BillPara.BillSerialNum = billPara.BillSerialNum;

                dynamic billInfo = data.BillInfo;

                query.Data.BillInfo = new BillInfo();
                query.Data.BillInfo.BillName = billInfo.BillName;
                query.Data.BillInfo.BillSerialNum = billInfo.BillSerialNum;

                //dynamicXml.ReqSign = "";

                //dynamic data = dynamicXml.Data;
                //data.IsExportQuery = 1;

                //dynamic billInfo = data.BillInfo;
                //billInfo.BillName = "value";
                //billInfo.BillSerialNum = "value";

                //dynamic queryPara = data.QueryPara;

                //queryPara.ContainBillInfo = 1;

                //queryPara.PageCount = 1;
                //queryPara.PageIndex = 1;
                //queryPara.StartDate = DateTime.Now;
                //queryPara.OrgIDs = "value";
                //queryPara.EndDate = DateTime.Now;
                //queryPara.State = "value";
                //queryPara.EquTypes = "value";

                //queryPara.ContainBillInfo = 1;

                //dynamic billPara = queryPara.BillPara;

                //billPara.BillDesc = "value";
                //billPara.BillSerialNum = "value";

                total = total.Add(watch.Elapsed);
            }

            Console.WriteLine("Dynamic Cost:" + total.TotalMilliseconds / 1000000);

            total = new TimeSpan();
            for (int i = 0; i < 1000000; i++)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                Query query = (Query)new XmlSerializer(typeof(Query)).Deserialize(new StringReader(xml));
                total = total.Add(watch.Elapsed);
            }

            Console.WriteLine("Serializer Cost:" + total.TotalMilliseconds / 1000000);

            total = new TimeSpan();
            for (int i = 0; i < 1000000; i++)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                Query query = DirectSerialize(xml);
                total = total.Add(watch.Elapsed);
            }

            Console.WriteLine("Direct Cost:" + total.TotalMilliseconds / 1000000);

            total = new TimeSpan();
            for (int i = 0; i < 1000000; i++)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                Query query = (Query)XmlObjectSerializer.ToObject(XDocument.Parse(xml).Root, typeof (Query));
                total = total.Add(watch.Elapsed);
            }

            Console.WriteLine("Reflection Cost:" + total.TotalMilliseconds / 1000000);

            Console.ReadLine();
        }