diff --git a/Src/Newtonsoft.Json.TestConsole/Newtonsoft.Json.TestConsole.csproj b/Src/Newtonsoft.Json.TestConsole/Newtonsoft.Json.TestConsole.csproj
index b5f3f346..e88712fa 100644
--- a/Src/Newtonsoft.Json.TestConsole/Newtonsoft.Json.TestConsole.csproj
+++ b/Src/Newtonsoft.Json.TestConsole/Newtonsoft.Json.TestConsole.csproj
@@ -21,6 +21,7 @@
DEBUG;TRACE
prompt
4
+ true
AnyCPU
diff --git a/Src/Newtonsoft.Json.TestConsole/Program.cs b/Src/Newtonsoft.Json.TestConsole/Program.cs
index 2e43b374..305b1e56 100644
--- a/Src/Newtonsoft.Json.TestConsole/Program.cs
+++ b/Src/Newtonsoft.Json.TestConsole/Program.cs
@@ -32,6 +32,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using Newtonsoft.Json.Tests;
+using Newtonsoft.Json.Tests.Converters;
namespace Newtonsoft.Json.TestConsole
{
@@ -53,8 +54,10 @@ namespace Newtonsoft.Json.TestConsole
//DeserializeLargeJson();
//WriteLargeJson();
//DeserializeJson();
- ReadLargeJson();
+ //ReadLargeJson();
//ReadLargeJsonJavaScriptSerializer();
+ DiscriminatedUnionConverterTests t = new DiscriminatedUnionConverterTests();
+ t.SerializePerformance();
Console.WriteLine();
Console.WriteLine("Finished");
diff --git a/Src/Newtonsoft.Json.Tests/Converters/DiscriminatedUnionConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/DiscriminatedUnionConverterTests.cs
index 42824b09..05b1e081 100644
--- a/Src/Newtonsoft.Json.Tests/Converters/DiscriminatedUnionConverterTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Converters/DiscriminatedUnionConverterTests.cs
@@ -23,6 +23,10 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
+using System.Diagnostics;
+using System.Reflection;
+using Microsoft.FSharp.Core;
+using Microsoft.FSharp.Reflection;
#if !(NET35 || NET20 || NETFX_CORE || ASPNETCORE50)
using System;
using System.Collections.Generic;
@@ -83,6 +87,58 @@ namespace Newtonsoft.Json.Tests.Converters
Assert.AreEqual(@"{""Case"":""AUD""}", json);
}
+ [Test]
+ public void SerializePerformance()
+ {
+ List values = new List
+ {
+ Shape.NewRectangle(10.0, 5.0),
+ Shape.NewCircle(7.5)
+ };
+
+ string json = JsonConvert.SerializeObject(values, Formatting.Indented);
+
+ Stopwatch ts = new Stopwatch();
+ ts.Start();
+
+ for (int i = 0; i < 2000; i++)
+ {
+ JsonConvert.SerializeObject(values);
+ }
+
+ ts.Stop();
+
+ Console.WriteLine(ts.Elapsed.TotalSeconds);
+ Console.WriteLine(json);
+ }
+
+ [Test]
+ public void DeserializePerformance()
+ {
+ string json = @"[
+ {""Case"":""Rectangle"",""Fields"":[10.0,5.0]},
+ {""Case"":""Rectangle"",""Fields"":[10.0,5.0]},
+ {""Case"":""Rectangle"",""Fields"":[10.0,5.0]},
+ {""Case"":""Rectangle"",""Fields"":[10.0,5.0]},
+ {""Case"":""Rectangle"",""Fields"":[10.0,5.0]}
+]";
+
+ JsonConvert.DeserializeObject>(json);
+
+ Stopwatch ts = new Stopwatch();
+ ts.Start();
+
+ for (int i = 0; i < 2000; i++)
+ {
+ JsonConvert.DeserializeObject>(json);
+ }
+
+ ts.Stop();
+
+ Console.WriteLine(ts.Elapsed.TotalSeconds);
+ Console.WriteLine(json);
+ }
+
[Test]
public void SerializeUnionWithFields()
{
@@ -116,6 +172,82 @@ namespace Newtonsoft.Json.Tests.Converters
Assert.AreEqual(10.0, r.width);
}
+ public class Union
+ {
+ public List Cases;
+ public Converter