static void Main(string[] args) { var obj = new Models.ComplexModelObject(); var str = Zippy.JSON.SerializeObjectToString(obj); }
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(); }