示例#1
0
 static void Main(string[] args)
 {
     var obj = new Models.ComplexModelObject();
     var str = Zippy.JSON.SerializeObjectToString(obj);
 }
示例#2
0
        static void TestJson()
        {
            //  var data = new Dictionary<string, double>();
            var data = new List <Tuple <string, double, string> >();
            // var c = new Models.SimpleModelType();
            var c = new Models.ComplexModelObject();
            //var c = Models.ModelWithCommonTypes.Create(23);
            var    sw   = System.Diagnostics.Stopwatch.StartNew();
            string json = null;

            try
            {
                json = Utf8Json.JsonSerializer.ToJsonString <object>(c);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    Utf8Json.JsonSerializer.ToJsonString <object>(c);
                }
                data.Add(new Tuple <string, double, string>("Utf8Json", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("Utf8Json", Int16.MaxValue, ex.ToString()));
            }

            try
            {
                json = Jil.JSON.Serialize <object>(c);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    Jil.JSON.Serialize <object>(c);
                }
                data.Add(new Tuple <string, double, string>("Jil", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("Jil", Int16.MaxValue, ex.ToString()));
            }

            try
            {
                json = Newtonsoft.Json.JsonConvert.SerializeObject(c);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    Newtonsoft.Json.JsonConvert.SerializeObject(c);
                }
                data.Add(new Tuple <string, double, string>("Newtonsoft", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("Newtonsoft", Int16.MaxValue, ex.ToString()));
            }


            try
            {
                var js = new System.Web.Script.Serialization.JavaScriptSerializer();
                json = js.Serialize(c);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    js.Serialize(c);
                }
                data.Add(new Tuple <string, double, string>("JavaScriptSerializer", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("JavaScriptSerializer", Int16.MaxValue, ex.ToString()));
            }



            try
            {
                ServiceStack.Text.Config.Defaults.IncludePublicFields = true;
                ServiceStack.Text.JsConfig.IncludePublicFields        = true;
                json = ServiceStack.Text.JsonSerializer.SerializeToString(c);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    ServiceStack.Text.JsonSerializer.SerializeToString(c);
                }
                data.Add(new Tuple <string, double, string>("ServiceStack", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("ServiceStack", Int16.MaxValue, ex.ToString()));
            }

            try
            {
                var rj = new Revenj.Serialization.JsonSerialization(new RevenjBinder());

                json = rj.Serialize(c);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    json = rj.Serialize(c);
                }
                data.Add(new Tuple <string, double, string>("Revenj", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("Revenj", Int16.MaxValue, ex.ToString()));
            }

            try
            {
                json = Zippy.JSON.SerializeObjectToString(c);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    Zippy.JSON.SerializeObjectToString(c);
                }
                data.Add(new Tuple <string, double, string>("Zippy", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("Zippy", Int16.MaxValue, ex.ToString()));
            }

            try
            {
                json = System.Text.Json.Serialization.JsonSerializer.ToString(c);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    System.Text.Json.Serialization.JsonSerializer.ToString(c);
                }
                data.Add(new Tuple <string, double, string>("System.Text.Json", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("System.Text.Json", Int16.MaxValue, ex.ToString()));
            }

            try
            {
                var sb2 = new StringWriter();
                GC.KeepAlive(sb2);
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    Zippy.JSON.SerializeObject(c, sb2);
                    sw.Stop();
                    sb2.GetStringBuilder().Length = 0;
                    sw.Start();
                }
                data.Add(new Tuple <string, double, string>("Zippy-StringWriter", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("Zippy-StringWriter", Int16.MaxValue, ex.ToString()));
            }

            try
            {
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    Zippy.JSON.SerializeObject(c, _nullWriter);
                }
                data.Add(new Tuple <string, double, string>("Zippy-NullWriter", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("Zippy-NullWriter", Int16.MaxValue, ex.ToString()));
            }

            try
            {
                var buffer = new Zippy.Serialize.Writers.BufferTextWriter();
                sw.Restart();
                for (var i = 0; i < testCount; i++)
                {
                    Zippy.JSON.SerializeObject(c, buffer);
                    sw.Stop();
                    buffer = new Zippy.Serialize.Writers.BufferTextWriter();
                    sw.Start();
                }
                data.Add(new Tuple <string, double, string>("Zippy-BufferText", sw.Elapsed.TotalMilliseconds, json));
            }
            catch (Exception ex)
            {
                data.Add(new Tuple <string, double, string>("Zippy-BufferText", Int16.MaxValue, ex.ToString()));
            }

            foreach (var item in data.OrderBy(v => v.Item2))
            {
                Console.WriteLine(item.Item1 + " : " + (item.Item2 == Int16.MaxValue ? "NA" : item.Item2.ToString("#,##0.00")) + " | " + item.Item3.Length);
            }

            c.ToString();
        }