Skip to content

Instantly share code, notes, and snippets.

@asmagin
Last active August 29, 2015 14:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asmagin/22c122e744be58956077 to your computer and use it in GitHub Desktop.
Save asmagin/22c122e744be58956077 to your computer and use it in GitHub Desktop.
using System;
using System.IO;
using Newtonsoft.Json;
using YamlDotNet.Serialization;
internal class Program
{
private const int count = 10000;
public static void json()
{
// convert string/file to YAML object
var r = @"{
""Languages"": [
{
""Language"": ""en"",
""Versions"": [
{
""Fields"": [
{
""NameHint"": ""__Lock"",
""Id"": ""001dd393-96c5-490b-924a-b0f25cd9efd8"",
""Value"": ""<r />""
},
{
""NameHint"": ""__Created"",
""Id"": ""25bed78c-4957-4165-998a-ca1b52f67497"",
""Value"": ""20150408T130722:635640952427100245""
},
{
""NameHint"": ""__Workflow state"",
""Id"": ""3e431de1-525e-47a3-b6b0-1ccbec3a8c98"",
""Value"": ""{205F8906-FC4F-4A5A-90CB-CD49387A73DF}""
},
{
""NameHint"": ""__Created by"",
""Id"": ""5dd74568-4d4b-44c1-b513-0af5f4cda34f"",
""Value"": ""sitecore\\kfigy""
},
{
""NameHint"": ""__Revision"",
""Id"": ""8cdc337e-a112-42fb-bbb4-4143751e123f"",
""Value"": ""75655727-f9cb-4de7-b15f-ca2215e84810""
},
{
""NameHint"": ""__Display name"",
""Id"": ""b5e02ad9-d56f-4c41-a065-a133db87bdeb"",
""Value"": ""Extreme Test""
},
{
""NameHint"": ""__Updated by"",
""Id"": ""badd9cf9-53e0-4d0c-bcc0-2d784c282f6a"",
""Value"": ""sitecore\\kfigy""
},
{
""NameHint"": ""__Updated"",
""Id"": ""d9cf14b1-fa16-4ba6-9288-e8a174d4d522"",
""Value"": ""20150408T140233:635640985535602870""
}
],
""VersionNumber"": 1
}
]
}
],
""SharedFields"": [
{
""NameHint"": ""__Workflow"",
""Id"": ""a4f985d9-98b3-4b52-aaaf-4344f6e747c6"",
""Value"": ""{7121FA3D-B469-4412-A170-53A5D94A80E4}""
},
{
""NameHint"": ""__Renderings"",
""Type"": ""layout"",
""Id"": ""f1a1fe9e-a60c-4ddb-a3a0-bb5b29fe732e"",
""Value"": ""<r xmlns:p=\""p\"" xmlns:s=\""s\"" p:p=\""1\"">\n\n <d id=\""{FE5D7FDF-89C0-4D99-9AA3-B5FBD009C9F3}\"">\n\n <r uid=\""{057712F5-EF77-4ED5-9995-8FB84B212242}\"" p:before=\""r[@uid='{AD93A0D5-2755-4477-9795-0A7B698EC715}']\"" s:id=\""{DCF9DC65-B848-467C-B8E2-5AC9FCFD7E5B}\"" s:ph=\""/wrapper/main\"" />\n\n <r uid=\""{F652D494-EBB1-452A-A098-0F51F6372344}\"" p:before=\""r[@uid='{6F1EF6D1-A10E-4660-A4C0-A50A106A2949}']\"" s:ds=\""{53EAB990-3593-40B3-9A17-FD4C66BADE68}\"" s:id=\""{0B7D3FEF-6F01-409D-89C5-2209C7793645}\"" s:ph=\""/wrapper/main/content\"" />\n\n <r uid=\""{6F1EF6D1-A10E-4660-A4C0-A50A106A2949}\"" s:ds=\""{8D875AA9-8F01-4FEA-A9BC-4661FC4F9DCC}\"" s:id=\""{09820DB5-4D68-4F3A-A3F5-37E02863797F}\"" s:ph=\""/wrapper/main/content\"" />\n\n </d>\n\n</r>""
}
],
""DatabaseName"": ""master"",
""TID"": ""FE8D0E16-455D-441E-A525-58B2128F6EFA"",
""PATH"": ""/sitecore/content/test"",
""PID"": ""1168BC6E-35CB-41DD-9256-B828550E9E50"",
""ID"": ""32A37307-0A19-4995-949C-17D843D799D8""
}";
object a = null;
object b = null;
var serializer = new JsonSerializer();
var start = DateTime.Now;
for (var i = 0; i < count; i++)
{
using (var s = new StringReader(r))
{
using (var reader = new JsonTextReader(s))
{
a = serializer.Deserialize(reader);
using (var writer = new StringWriter())
{
serializer.Serialize(writer, a);
b = writer.ToString();
}
}
}
a = JsonConvert.DeserializeObject<dynamic>(r);
b = JsonConvert.SerializeObject(a, Formatting.Indented);
}
var end = DateTime.Now;
Console.WriteLine((end - start).Ticks);
Console.WriteLine((end - start).TotalSeconds);
Console.WriteLine(b);
Console.WriteLine();
Console.WriteLine();
}
public static void yaml()
{
// convert string/file to YAML object
var r = @"ID: 32A37307-0A19-4995-949C-17D843D799D8
PID: 1168BC6E-35CB-41DD-9256-B828550E9E50
TID: FE8D0E16-455D-441E-A525-58B2128F6EFA
PATH: /sitecore/content/test
DatabaseName: master
SharedFields:
- Id: a4f985d9-98b3-4b52-aaaf-4344f6e747c6
NameHint: __Workflow
Value: '{7121FA3D-B469-4412-A170-53A5D94A80E4}'
- Id: f1a1fe9e-a60c-4ddb-a3a0-bb5b29fe732e
NameHint: __Renderings
Type: layout
Value: >-
<r xmlns:p=""p"" xmlns:s=""s"" p:p=""1"">
<d id=""{FE5D7FDF-89C0-4D99-9AA3-B5FBD009C9F3}"">
<r uid=""{057712F5-EF77-4ED5-9995-8FB84B212242}"" p:before=""r[@uid='{AD93A0D5-2755-4477-9795-0A7B698EC715}']"" s:id=""{DCF9DC65-B848-467C-B8E2-5AC9FCFD7E5B}"" s:ph=""/wrapper/main"" />
<r uid=""{F652D494-EBB1-452A-A098-0F51F6372344}"" p:before=""r[@uid='{6F1EF6D1-A10E-4660-A4C0-A50A106A2949}']"" s:ds=""{53EAB990-3593-40B3-9A17-FD4C66BADE68}"" s:id=""{0B7D3FEF-6F01-409D-89C5-2209C7793645}"" s:ph=""/wrapper/main/content"" />
<r uid=""{6F1EF6D1-A10E-4660-A4C0-A50A106A2949}"" s:ds=""{8D875AA9-8F01-4FEA-A9BC-4661FC4F9DCC}"" s:id=""{09820DB5-4D68-4F3A-A3F5-37E02863797F}"" s:ph=""/wrapper/main/content"" />
</d>
</r>
Languages:
- Language: en
Versions:
- VersionNumber: 1
Fields:
- Id: 001dd393-96c5-490b-924a-b0f25cd9efd8
NameHint: __Lock
Value: <r />
- Id: 25bed78c-4957-4165-998a-ca1b52f67497
NameHint: __Created
Value: 20150408T130722:635640952427100245
- Id: 3e431de1-525e-47a3-b6b0-1ccbec3a8c98
NameHint: __Workflow state
Value: '{205F8906-FC4F-4A5A-90CB-CD49387A73DF}'
- Id: 5dd74568-4d4b-44c1-b513-0af5f4cda34f
NameHint: __Created by
Value: sitecore\kfigy
- Id: 8cdc337e-a112-42fb-bbb4-4143751e123f
NameHint: __Revision
Value: 75655727-f9cb-4de7-b15f-ca2215e84810
- Id: b5e02ad9-d56f-4c41-a065-a133db87bdeb
NameHint: __Display name
Value: Extreme Test
- Id: badd9cf9-53e0-4d0c-bcc0-2d784c282f6a
NameHint: __Updated by
Value: sitecore\kfigy
- Id: d9cf14b1-fa16-4ba6-9288-e8a174d4d522
NameHint: __Updated
Value: 20150408T140233:635640985535602870
";
var deserializer = new Deserializer();
var serializer = new Serializer();
object a = null;
object b = null;
var start = DateTime.Now;
for (var i = 0; i < count; i++)
{
using (var reader = new StringReader(r))
{
a = deserializer.Deserialize<dynamic>(reader);
using (var writer = new StringWriter())
{
serializer.Serialize(writer, a);
b = writer.ToString();
}
}
}
var end = DateTime.Now;
Console.WriteLine((end - start).Ticks);
Console.WriteLine((end - start).TotalSeconds);
Console.WriteLine(b);
Console.WriteLine();
Console.WriteLine();
}
private static void Main(string[] args)
{
Console.WriteLine("yaml");
yaml();
Console.WriteLine();
Console.WriteLine("json");
json();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment