Merge pull request #404 from neuecc/add-benchmark
Add SerializerBenchmark project
This commit is contained in:
Коммит
dafb2ca931
|
@ -64,6 +64,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
|||
.gitignore = .gitignore
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmark", "benchmark", "{51A614B0-E583-4DD2-AC7D-6A65634582E0}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SerializerBenchmark", "benchmark\SerializerBenchmark\SerializerBenchmark.csproj", "{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
@ -266,6 +270,18 @@ Global
|
|||
{79C2B2CB-872A-4BA9-82DC-60F6DD77F940}.Release|x64.Build.0 = Release|Any CPU
|
||||
{79C2B2CB-872A-4BA9-82DC-60F6DD77F940}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{79C2B2CB-872A-4BA9-82DC-60F6DD77F940}.Release|x86.Build.0 = Release|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Release|x64.Build.0 = Release|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -287,9 +303,7 @@ Global
|
|||
{2A32A538-BA26-4D89-85D0-E4249AFA0837} = {BF4C4202-5015-4FBD-80E6-D0F36A06F700}
|
||||
{10AD85DD-929D-49B8-BD43-45242C2644B7} = {86309CF6-0054-4CE3-BFD3-CA0AA7DB17BC}
|
||||
{79C2B2CB-872A-4BA9-82DC-60F6DD77F940} = {19FE674A-AC94-4E7E-B24C-2285D1D04CDE}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {26F0752B-06F7-44AD-BFEE-8F2E36B3AA27}
|
||||
{4142EA80-FEF4-44A5-8553-1AE84BEBAFED} = {51A614B0-E583-4DD2-AC7D-6A65634582E0}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B3911209-2DBF-47F8-98F6-BBC0EDFE63DE}
|
||||
|
|
|
@ -0,0 +1,158 @@
|
|||
using Benchmark.Serializers;
|
||||
using BenchmarkDotNet.Columns;
|
||||
using BenchmarkDotNet.Configs;
|
||||
using BenchmarkDotNet.Diagnosers;
|
||||
using BenchmarkDotNet.Environments;
|
||||
using BenchmarkDotNet.Exporters;
|
||||
using BenchmarkDotNet.Exporters.Csv;
|
||||
using BenchmarkDotNet.Jobs;
|
||||
using BenchmarkDotNet.Order;
|
||||
using BenchmarkDotNet.Reports;
|
||||
using BenchmarkDotNet.Running;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Benchmark
|
||||
{
|
||||
public class BenchmarkConfig : ManualConfig
|
||||
{
|
||||
public BenchmarkConfig()
|
||||
{
|
||||
// run quickly:)
|
||||
var baseConfig = Job.ShortRun.WithIterationCount(1).WithWarmupCount(1);
|
||||
|
||||
// Add(baseConfig.With(Runtime.Clr).With(Jit.RyuJit).With(Platform.X64));
|
||||
Add(baseConfig.With(Runtime.Core).With(Jit.RyuJit).With(Platform.X64));
|
||||
|
||||
Add(MarkdownExporter.GitHub);
|
||||
Add(CsvExporter.Default);
|
||||
Add(MemoryDiagnoser.Default);
|
||||
|
||||
Add(new DataSizeColumn());
|
||||
|
||||
this.Set(new CustomOrderer());
|
||||
}
|
||||
|
||||
// 0.11.4 has bug of set CustomOrderer https://github.com/dotnet/BenchmarkDotNet/issues/1070
|
||||
// so skip update to 0.11.4.
|
||||
|
||||
public class CustomOrderer : IOrderer
|
||||
{
|
||||
public bool SeparateLogicalGroups => false;
|
||||
|
||||
public IEnumerable<BenchmarkCase> GetExecutionOrder(BenchmarkCase[] benchmarksCase)
|
||||
{
|
||||
return benchmarksCase;
|
||||
}
|
||||
|
||||
public string GetHighlightGroupKey(BenchmarkCase benchmarkCase)
|
||||
{
|
||||
return benchmarkCase.Descriptor.MethodIndex.ToString();
|
||||
}
|
||||
|
||||
public string GetLogicalGroupKey(IConfig config, BenchmarkCase[] allBenchmarksCases, BenchmarkCase benchmarkCase)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public IEnumerable<IGrouping<string, BenchmarkCase>> GetLogicalGroupOrder(IEnumerable<IGrouping<string, BenchmarkCase>> logicalGroups)
|
||||
{
|
||||
return logicalGroups;
|
||||
}
|
||||
|
||||
public IEnumerable<BenchmarkCase> GetSummaryOrder(BenchmarkCase[] benchmarksCases, Summary summary)
|
||||
{
|
||||
return benchmarksCases
|
||||
.OrderBy(x => x.Descriptor.WorkloadMethod.Name)
|
||||
.ThenBy(x => x.Parameters.Items.Select(y => y.Value).OfType<SerializerBase>().First().GetType().Name);
|
||||
}
|
||||
}
|
||||
|
||||
public class DataSizeColumn : IColumn
|
||||
{
|
||||
public string Id => "DataSize";
|
||||
|
||||
public string ColumnName => "DataSize";
|
||||
|
||||
public bool AlwaysShow => true;
|
||||
|
||||
public ColumnCategory Category => ColumnCategory.Custom;
|
||||
|
||||
public int PriorityInCategory => int.MaxValue;
|
||||
|
||||
public bool IsNumeric => true;
|
||||
|
||||
public UnitType UnitType => UnitType.Size;
|
||||
|
||||
public string Legend => null;
|
||||
|
||||
public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
|
||||
{
|
||||
return GetValue(summary, benchmarkCase, null);
|
||||
}
|
||||
|
||||
public string GetValue(Summary summary, BenchmarkCase benchmarkCase, ISummaryStyle style)
|
||||
{
|
||||
var mi = benchmarkCase.Descriptor.WorkloadMethod;
|
||||
if (mi.Name.Contains("Serialize"))
|
||||
{
|
||||
var instance = Activator.CreateInstance(mi.DeclaringType);
|
||||
mi.DeclaringType.GetField("Serializer").SetValue(instance, benchmarkCase.Parameters[0].Value);
|
||||
|
||||
var bytes = (byte[])mi.Invoke(instance, null);
|
||||
return ToHumanReadableSize(bytes.Length);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "-";
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsAvailable(Summary summary)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static string ToHumanReadableSize(long size)
|
||||
{
|
||||
return ToHumanReadableSize(new Nullable<long>(size));
|
||||
}
|
||||
|
||||
static string ToHumanReadableSize(long? size)
|
||||
{
|
||||
if (size == null) return "NULL";
|
||||
|
||||
double bytes = size.Value;
|
||||
|
||||
if (bytes <= 1024) return bytes.ToString("f2") + " B";
|
||||
|
||||
bytes = bytes / 1024;
|
||||
if (bytes <= 1024) return bytes.ToString("f2") + " KB";
|
||||
|
||||
bytes = bytes / 1024;
|
||||
if (bytes <= 1024) return bytes.ToString("f2") + " MB";
|
||||
|
||||
bytes = bytes / 1024;
|
||||
if (bytes <= 1024) return bytes.ToString("f2") + " GB";
|
||||
|
||||
bytes = bytes / 1024;
|
||||
if (bytes <= 1024) return bytes.ToString("f2") + " TB";
|
||||
|
||||
bytes = bytes / 1024;
|
||||
if (bytes <= 1024) return bytes.ToString("f2") + " PB";
|
||||
|
||||
bytes = bytes / 1024;
|
||||
if (bytes <= 1024) return bytes.ToString("f2") + " EB";
|
||||
|
||||
bytes = bytes / 1024;
|
||||
return bytes + " ZB";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Benchmark
|
||||
{
|
||||
public class GenericEqualityComparer<T> : IEqualityComparer<T> where T : class, IGenericEquality<T>
|
||||
{
|
||||
public static readonly GenericEqualityComparer<T> Default = new GenericEqualityComparer<T>();
|
||||
|
||||
public bool Equals(T x, T y)
|
||||
{
|
||||
return x.TrueEquals(y);
|
||||
}
|
||||
|
||||
public int GetHashCode(T obj)
|
||||
{
|
||||
return 0; // not fast, but not really important here
|
||||
}
|
||||
}
|
||||
|
||||
public static class ExtensionMethods
|
||||
{
|
||||
public static bool TrueEqualsString(this IEnumerable<string> a, IEnumerable<string> b)
|
||||
{
|
||||
return a.SequenceEqual(b);
|
||||
}
|
||||
|
||||
public static bool TrueEqualsString(this string a, string b)
|
||||
{
|
||||
return a == b;
|
||||
}
|
||||
|
||||
public static bool TrueEquals<T>(this T? a, T? b)
|
||||
where T : struct
|
||||
{
|
||||
if (!a.HasValue && !b.HasValue)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (!a.HasValue)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!b.HasValue)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return a.Value.Equals(b.Value);
|
||||
}
|
||||
|
||||
public static bool TrueEquals<T>(this T a, T b)
|
||||
where T : class, IGenericEquality<T>
|
||||
{
|
||||
if (ReferenceEquals(a, null) && ReferenceEquals(b, null))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ReferenceEquals(a, null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ReferenceEquals(b, null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return a.Equals(b);
|
||||
}
|
||||
|
||||
public static bool TrueEqualsList<T>(this IEnumerable<T> a, IEnumerable<T> b)
|
||||
where T : class, IGenericEquality<T>
|
||||
{
|
||||
return a.SequenceEqual(b, GenericEqualityComparer<T>.Default);
|
||||
}
|
||||
|
||||
public static bool TrueEqualsListDynamic<T>(this IEnumerable<T> a, IEnumerable<dynamic> b)
|
||||
where T : class, IGenericEquality<T>
|
||||
{
|
||||
if (ReferenceEquals(a, null) && ReferenceEquals(b, null))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ReferenceEquals(a, null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (ReferenceEquals(b, null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
using (var e1 = a.GetEnumerator())
|
||||
using (var e2 = b.GetEnumerator())
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
var e1Next = e1.MoveNext();
|
||||
var e2Next = e2.MoveNext();
|
||||
if (e1Next != e2Next)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!e1Next && !e2Next)
|
||||
{
|
||||
break;
|
||||
}
|
||||
var c1 = e1.Current;
|
||||
var c2 = e2.Current;
|
||||
|
||||
if (c1 == null && c2 != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (c2 == null && c1 != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!c1.EqualsDynamic(c2))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool IsTypedList(this Type type)
|
||||
{
|
||||
return
|
||||
type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(IList<>) ||
|
||||
type.GetTypeInfo().GetInterfaces().Any(i =>
|
||||
i.GetTypeInfo().IsGenericType && i.GetGenericTypeDefinition() == typeof(IList<>));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class BooleanValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(bool);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return _prng.Next() % 2 == 1;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class ByteValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(byte);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return (byte) (_prng.Next() & 0xFF);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class DateTimeOffsetValueFixture : IValueFixture
|
||||
{
|
||||
private long _lastValue;
|
||||
public Type Type { get; } = typeof(DateTimeOffset);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
_lastValue += 1000;
|
||||
return DateTimeOffset.FromUnixTimeMilliseconds(_lastValue);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class DateTimeValueFixture : IValueFixture
|
||||
{
|
||||
private long _lastValue;
|
||||
private static readonly long Offset = new DateTime(1970, 1,1,0,0,0).ToFileTime();
|
||||
public Type Type { get; } = typeof(DateTime);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
_lastValue += 1000;
|
||||
var dt = DateTime.FromFileTime(_lastValue+Offset);
|
||||
return dt;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class DecimalValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(decimal);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return _prng.Next() + 0.66m;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class DoubleValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(double);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return _prng.Next() + 0.5d;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class EnumValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
private readonly string[] _values;
|
||||
|
||||
public EnumValueFixture(Type type)
|
||||
{
|
||||
Type = type;
|
||||
_values = Enum.GetNames(Type);
|
||||
}
|
||||
|
||||
public Type Type { get; }
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return Enum.Parse(Type, _values[_prng.Next(_values.Length)]);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,243 @@
|
|||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class ExpressionTreeFixture
|
||||
{
|
||||
private readonly ConcurrentDictionary<Type, Func<int, int, object>> _functorCache =
|
||||
new ConcurrentDictionary<Type, Func<int, int, object>>();
|
||||
|
||||
private readonly Dictionary<Type, IValueFixture> _valueFixtures = new Dictionary<Type, IValueFixture>();
|
||||
|
||||
public ExpressionTreeFixture()
|
||||
{
|
||||
IValueFixture[] fixtures = new IValueFixture[]
|
||||
{
|
||||
new StringValueFixture(),
|
||||
new IntValueFixture(),
|
||||
new GuidValueFixture(),
|
||||
new DateTimeOffsetValueFixture(),
|
||||
new DateTimeValueFixture(),
|
||||
new BooleanValueFixture(),
|
||||
new DecimalValueFixture(),
|
||||
new LongValueFixture(),
|
||||
new FloatValueFixture(),
|
||||
new DoubleValueFixture(),
|
||||
new ByteValueFixture(),
|
||||
new ShortValueFixture(),
|
||||
new ByteArrayFixture(),
|
||||
new SByteValueFixture(),
|
||||
new UShortValueFixture(),
|
||||
new UInt32ValueFixture(),
|
||||
new UInt64ValueFixture(),
|
||||
new CharValueFixture()
|
||||
};
|
||||
|
||||
foreach (var item in fixtures)
|
||||
{
|
||||
_valueFixtures.Add(item.Type, item);
|
||||
}
|
||||
}
|
||||
|
||||
public object Create(Type type, int repeatCount = 1, int recursiveCount = 1)
|
||||
{
|
||||
var functor = _functorCache.GetOrAdd(type, AddFunctor);
|
||||
return functor(repeatCount, recursiveCount);
|
||||
}
|
||||
|
||||
private Func<int, int, object> AddFunctor(Type type)
|
||||
{
|
||||
var repeatCount = Expression.Parameter(typeof(int), "repeatCount");
|
||||
var recursiveCount = Expression.Parameter(typeof(int), "recursiveCount");
|
||||
var subExpressions = new List<Expression>();
|
||||
var typedOutput = Expression.Variable(type, "typedOutput");
|
||||
if (_valueFixtures.ContainsKey(type) || type.IsArray || type.IsTypedList()
|
||||
) // they can be generated directly
|
||||
{
|
||||
var expression = GenerateValue(typedOutput, repeatCount, recursiveCount, type);
|
||||
subExpressions.Add(expression);
|
||||
}
|
||||
else
|
||||
{
|
||||
subExpressions.Add(Expression.Assign(typedOutput, Expression.New(type)));
|
||||
var typeProps = type.GetProperties();
|
||||
foreach (var propertyInfo in typeProps)
|
||||
{
|
||||
if (!propertyInfo.CanWrite)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var propertyType = propertyInfo.PropertyType;
|
||||
var isRecursion = IsRecursion(type, propertyType) || IsRecursion(propertyType, type);
|
||||
var memberAccess = Expression.MakeMemberAccess(typedOutput, propertyInfo);
|
||||
var expression = GenerateValue(memberAccess, repeatCount,
|
||||
isRecursion ? Expression.Decrement(recursiveCount) : (Expression)recursiveCount, propertyType);
|
||||
subExpressions.Add(expression);
|
||||
}
|
||||
}
|
||||
var returnTarget = Expression.Label(typeof(object));
|
||||
var returnLabel = Expression.Label(returnTarget, Expression.Convert(typedOutput, typeof(object)));
|
||||
subExpressions.Add(returnLabel);
|
||||
var block = Expression.Block(new[] { typedOutput }, subExpressions);
|
||||
var lambda = Expression.Lambda<Func<int, int, object>>(block, repeatCount, recursiveCount);
|
||||
return lambda.Compile();
|
||||
}
|
||||
|
||||
private bool IsRecursion(Type parentType, Type type)
|
||||
{
|
||||
if (type == parentType)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (parentType.IsTypedList())
|
||||
{
|
||||
var childType = parentType.GetGenericArguments()[0];
|
||||
return IsRecursion(type, childType);
|
||||
}
|
||||
if (parentType.IsArray)
|
||||
{
|
||||
var elementType = parentType.GetElementType();
|
||||
return IsRecursion(type, elementType);
|
||||
}
|
||||
if (Nullable.GetUnderlyingType(parentType) != null)
|
||||
{
|
||||
var nullableType = Nullable.GetUnderlyingType(parentType);
|
||||
return IsRecursion(type, nullableType);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private Expression GenerateValue(Expression generatedValue, Expression repeatCount, Expression recursiveCount,
|
||||
Type type)
|
||||
{
|
||||
var result = new List<Expression>();
|
||||
if (_valueFixtures.TryGetValue(type, out var valueFixture))
|
||||
{
|
||||
var generateMethodInfo = valueFixture.GetType().GetMethod(nameof(IValueFixture.Generate));
|
||||
result.Add(Expression.Assign(generatedValue,
|
||||
Expression.Convert(Expression.Call(Expression.Constant(valueFixture), generateMethodInfo),
|
||||
generatedValue.Type)));
|
||||
}
|
||||
else if (type.IsTypedList())
|
||||
{
|
||||
var expressionList = new List<Expression>();
|
||||
var elementType = type.GetGenericArguments()[0];
|
||||
expressionList.Add(Expression.Assign(generatedValue, Expression.New(type)));
|
||||
var index = Expression.Parameter(typeof(int), "i");
|
||||
var addMi = type.GetMethod("Add", new[] { elementType });
|
||||
var childValue = Expression.Parameter(elementType);
|
||||
var loopBlock = new List<Expression>
|
||||
{
|
||||
GenerateValue(childValue, repeatCount, recursiveCount, elementType),
|
||||
Expression.Call(generatedValue, addMi, childValue)
|
||||
};
|
||||
if (loopBlock.Count > 0)
|
||||
{
|
||||
var loopContent = Expression.Block(new[] { childValue, index }, loopBlock);
|
||||
expressionList.Add(ForLoop(index, repeatCount, loopContent));
|
||||
}
|
||||
result.Add(MakeIfExpression(recursiveCount, expressionList));
|
||||
}
|
||||
else if (type.IsArray)
|
||||
{
|
||||
var elementType = type.GetElementType();
|
||||
var index = Expression.Parameter(typeof(int), "i");
|
||||
var arrayList = new List<Expression>
|
||||
{
|
||||
Expression.Assign(generatedValue, Expression.NewArrayBounds(elementType, repeatCount)),
|
||||
ForLoop(index, repeatCount,
|
||||
GenerateValue(Expression.ArrayAccess(generatedValue, index), repeatCount, recursiveCount,
|
||||
elementType))
|
||||
};
|
||||
result.Add(MakeIfExpression(recursiveCount, arrayList));
|
||||
}
|
||||
else if (Nullable.GetUnderlyingType(type) != null)
|
||||
{
|
||||
var elementType = Nullable.GetUnderlyingType(type);
|
||||
result.Add(GenerateValue(generatedValue, repeatCount, recursiveCount, elementType));
|
||||
}
|
||||
else if (type.GetTypeInfo().IsEnum)
|
||||
{
|
||||
if (!_valueFixtures.TryGetValue(type, out valueFixture))
|
||||
{
|
||||
valueFixture = new EnumValueFixture(type);
|
||||
_valueFixtures.Add(valueFixture.Type, valueFixture);
|
||||
}
|
||||
result.Add(GenerateValue(generatedValue, repeatCount, recursiveCount,
|
||||
type)); // call again for main method
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Add(MakeIfExpression(recursiveCount,
|
||||
InvokeCreate(type, generatedValue, repeatCount, recursiveCount)));
|
||||
}
|
||||
return result.Count > 1 ? Expression.Block(result) : result.Single();
|
||||
}
|
||||
|
||||
private Expression InvokeCreate(Type type, Expression generatedValue, Expression repeatCount,
|
||||
Expression recursiveCount)
|
||||
{
|
||||
var mi = typeof(ExpressionTreeFixture).GetMethod(nameof(Create),
|
||||
new[] { typeof(Type), typeof(int), typeof(int) });
|
||||
return Expression.Assign(generatedValue,
|
||||
Expression.Convert(
|
||||
Expression.Call(Expression.Constant(this), mi,
|
||||
new[] { Expression.Constant(type), repeatCount, recursiveCount }),
|
||||
generatedValue.Type));
|
||||
}
|
||||
|
||||
private Expression MakeIfExpression(Expression recursiveCount, params Expression[] input)
|
||||
{
|
||||
return Expression.IfThen(Expression.GreaterThanOrEqual(recursiveCount, Expression.Constant(0)),
|
||||
input.Length > 1 ? Expression.Block(input) : input.Single());
|
||||
}
|
||||
|
||||
private Expression MakeIfExpression(Expression recursiveCount, IList<Expression> input)
|
||||
{
|
||||
return Expression.IfThen(Expression.GreaterThanOrEqual(recursiveCount, Expression.Constant(0)),
|
||||
input.Count > 1 ? Expression.Block(input) : input.Single());
|
||||
}
|
||||
|
||||
public T Create<T>(int repeatCount = 1, int recursiveCount = 1)
|
||||
{
|
||||
return (T)Create(typeof(T), repeatCount, recursiveCount);
|
||||
}
|
||||
|
||||
public IEnumerable<T> CreateMany<T>(int count, int repeatCount = 1, int recursiveCount = 1)
|
||||
{
|
||||
return CreateMany(typeof(T), count, repeatCount, recursiveCount).Cast<T>();
|
||||
}
|
||||
|
||||
public IEnumerable<object> CreateMany(Type type, int count, int repeatCount = 1, int recursiveCount = 1)
|
||||
{
|
||||
var functor = _functorCache.GetOrAdd(type, AddFunctor);
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
yield return functor(repeatCount, recursiveCount);
|
||||
}
|
||||
}
|
||||
|
||||
public static Expression ForLoop(ParameterExpression index, Expression lengthExpression, Expression loopContent)
|
||||
{
|
||||
var breakLabel = Expression.Label("LoopBreak");
|
||||
var length = Expression.Variable(typeof(int), "length");
|
||||
var block = Expression.Block(new[] { index, length },
|
||||
Expression.Assign(index, Expression.Constant(0)),
|
||||
Expression.Assign(length, lengthExpression),
|
||||
Expression.Loop(
|
||||
Expression.IfThenElse(
|
||||
Expression.LessThan(index, length),
|
||||
Expression.Block(loopContent, Expression.PostIncrementAssign(index)),
|
||||
Expression.Break(breakLabel)
|
||||
),
|
||||
breakLabel)
|
||||
);
|
||||
return block;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class FloatValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(float);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return (float) _prng.Next() % 10000 + 0.5f;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class GuidValueFixture : IValueFixture
|
||||
{
|
||||
public Type Type { get; } = typeof(Guid);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return Guid.NewGuid();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public interface IValueFixture
|
||||
{
|
||||
Type Type { get; }
|
||||
object Generate();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class IntValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(int);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return _prng.Next();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class LongValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(long);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return ((long) _prng.Next() << 32) | (uint) _prng.Next();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public delegate T Converter<T>(ReadOnlySpan<byte> buffer);
|
||||
|
||||
public abstract class PrimitiveFixtureBase<T> : IValueFixture
|
||||
where T : unmanaged
|
||||
{
|
||||
private readonly Random rand = new Random();
|
||||
|
||||
public Type Type => typeof(T);
|
||||
|
||||
public abstract object Generate();
|
||||
|
||||
protected unsafe object GenerateBytes(Converter<T> converter)
|
||||
{
|
||||
Span<byte> buffer = stackalloc byte[sizeof(T)];
|
||||
rand.NextBytes(buffer);
|
||||
return converter(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
public class SByteValueFixture : PrimitiveFixtureBase<sbyte>
|
||||
{
|
||||
public override object Generate()
|
||||
{
|
||||
return GenerateBytes(x => unchecked((sbyte)x[0]));
|
||||
}
|
||||
}
|
||||
|
||||
public class UShortValueFixture : PrimitiveFixtureBase<ushort>
|
||||
{
|
||||
public override object Generate() => GenerateBytes(BitConverter.ToUInt16);
|
||||
}
|
||||
|
||||
public class UInt32ValueFixture : PrimitiveFixtureBase<UInt32>
|
||||
{
|
||||
public override object Generate() => GenerateBytes(BitConverter.ToUInt32);
|
||||
}
|
||||
|
||||
public class UInt64ValueFixture : PrimitiveFixtureBase<UInt64>
|
||||
{
|
||||
public override object Generate() => GenerateBytes(BitConverter.ToUInt64);
|
||||
}
|
||||
|
||||
public class CharValueFixture : PrimitiveFixtureBase<Char>
|
||||
{
|
||||
public override object Generate() => GenerateBytes(BitConverter.ToChar);
|
||||
}
|
||||
|
||||
public class ByteArrayFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(byte[]);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
var bytes = new byte[100];
|
||||
_prng.NextBytes(bytes);
|
||||
return bytes;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class ShortValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
public Type Type { get; } = typeof(short);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return (short) (_prng.Next() & 0xFFFF);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Fixture
|
||||
{
|
||||
public class StringValueFixture : IValueFixture
|
||||
{
|
||||
private readonly Random _prng = new Random();
|
||||
|
||||
public Type Type { get; } = typeof(string);
|
||||
|
||||
public object Generate()
|
||||
{
|
||||
return Generate(8);
|
||||
}
|
||||
|
||||
private string Generate(int length)
|
||||
{
|
||||
const string chars = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var cArray = new char[length];
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
cArray[i] = chars[_prng.Next(chars.Length)];
|
||||
}
|
||||
return new string(cArray);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
namespace Benchmark
|
||||
{
|
||||
public interface IGenericEquality<in T>
|
||||
{
|
||||
bool Equals(T obj);
|
||||
bool EqualsDynamic(dynamic obj);
|
||||
}
|
||||
}
|
Двоичный файл не отображается.
|
@ -0,0 +1,43 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class AccessToken : IGenericEquality<AccessToken>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string access_token { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public DateTime? expires_on_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? account_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public List<string> scope { get; set; }
|
||||
|
||||
public bool Equals(AccessToken obj)
|
||||
{
|
||||
return
|
||||
access_token.TrueEqualsString(obj.access_token) ||
|
||||
expires_on_date.TrueEquals(obj.expires_on_date) ||
|
||||
account_id.TrueEquals(obj.account_id) ||
|
||||
scope.TrueEqualsString(obj.scope);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
access_token.TrueEqualsString((string)obj.access_token) ||
|
||||
expires_on_date.TrueEquals((DateTime?)obj.expires_on_date) ||
|
||||
account_id.TrueEquals((int?)obj.account_id) ||
|
||||
scope.TrueEqualsString((IEnumerable<string>)obj.scope);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class AccountMerge : IGenericEquality<AccountMerge>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? old_account_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? new_account_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? merge_date { get; set; }
|
||||
|
||||
public bool Equals(AccountMerge obj)
|
||||
{
|
||||
return
|
||||
old_account_id.TrueEquals(obj.old_account_id) &&
|
||||
new_account_id.TrueEquals(obj.new_account_id) &&
|
||||
merge_date.TrueEquals(obj.merge_date);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
old_account_id.TrueEquals((int?) obj.old_account_id) &&
|
||||
new_account_id.TrueEquals((int?) obj.new_account_id) &&
|
||||
merge_date.TrueEquals((DateTime?) obj.merge_date);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Answer : IGenericEquality<Answer>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? answer_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? locked_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public DateTime? last_edit_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public DateTime? last_activity_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? score { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public DateTime? community_owned_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public bool? is_accepted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public ShallowUser owner { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public int? up_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public int? down_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(15), oldmsgpack::MessagePack.Key(15 - 1), newmsgpack::MessagePack.Key(15 - 1)]
|
||||
public List<Comment> comments { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(16), oldmsgpack::MessagePack.Key(16 - 1), newmsgpack::MessagePack.Key(16 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(17), oldmsgpack::MessagePack.Key(17 - 1), newmsgpack::MessagePack.Key(17 - 1)]
|
||||
public List<string> tags { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(18), oldmsgpack::MessagePack.Key(18 - 1), newmsgpack::MessagePack.Key(18 - 1)]
|
||||
public bool? upvoted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(19), oldmsgpack::MessagePack.Key(19 - 1), newmsgpack::MessagePack.Key(19 - 1)]
|
||||
public bool? downvoted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(20), oldmsgpack::MessagePack.Key(20 - 1), newmsgpack::MessagePack.Key(20 - 1)]
|
||||
public bool? accepted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(21), oldmsgpack::MessagePack.Key(21 - 1), newmsgpack::MessagePack.Key(21 - 1)]
|
||||
public ShallowUser last_editor { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(22), oldmsgpack::MessagePack.Key(22 - 1), newmsgpack::MessagePack.Key(22 - 1)]
|
||||
public int? comment_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(23), oldmsgpack::MessagePack.Key(23 - 1), newmsgpack::MessagePack.Key(23 - 1)]
|
||||
public string body_markdown { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(24), oldmsgpack::MessagePack.Key(24 - 1), newmsgpack::MessagePack.Key(24 - 1)]
|
||||
public string share_link { get; set; }
|
||||
|
||||
public bool Equals(Answer obj)
|
||||
{
|
||||
return
|
||||
accepted.TrueEquals(obj.accepted) &&
|
||||
answer_id.TrueEquals(obj.answer_id) &&
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
body_markdown.TrueEqualsString(obj.body_markdown) &&
|
||||
comment_count.TrueEquals(obj.comment_count) &&
|
||||
comments.TrueEqualsList(obj.comments) &&
|
||||
community_owned_date.TrueEquals(obj.community_owned_date) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
down_vote_count.TrueEquals(obj.down_vote_count) &&
|
||||
downvoted.TrueEquals(obj.downvoted) &&
|
||||
is_accepted.TrueEquals(obj.is_accepted) &&
|
||||
last_activity_date.TrueEquals(obj.last_activity_date) &&
|
||||
last_edit_date.TrueEquals(obj.last_edit_date) &&
|
||||
last_editor.TrueEquals(obj.last_editor) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
locked_date.TrueEquals(obj.locked_date) &&
|
||||
owner.TrueEquals(obj.owner) &&
|
||||
question_id.TrueEquals(obj.question_id) &&
|
||||
score.TrueEquals(obj.score) &&
|
||||
share_link.TrueEqualsString(obj.share_link) &&
|
||||
tags.TrueEqualsString(obj.tags) &&
|
||||
title.TrueEqualsString(obj.title) &&
|
||||
up_vote_count.TrueEquals(obj.up_vote_count) &&
|
||||
upvoted.TrueEquals(obj.upvoted);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
accepted.TrueEquals((bool?) obj.accepted) &&
|
||||
answer_id.TrueEquals((int?) obj.answer_id) &&
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
body_markdown.TrueEqualsString((string) obj.body_markdown) &&
|
||||
comment_count.TrueEquals((int?) obj.comment_count) &&
|
||||
comments.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.comments) &&
|
||||
community_owned_date.TrueEquals((DateTime?) obj.community_owned_date) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
down_vote_count.TrueEquals((int?) obj.down_vote_count) &&
|
||||
downvoted.TrueEquals((bool?) obj.downvoted) &&
|
||||
is_accepted.TrueEquals((bool?) obj.is_accepted) &&
|
||||
last_activity_date.TrueEquals((DateTime?) obj.last_activity_date) &&
|
||||
last_edit_date.TrueEquals((DateTime?) obj.last_edit_date) &&
|
||||
(last_editor == null && obj.last_editor == null || last_editor.EqualsDynamic(obj.last_editor)) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
locked_date.TrueEquals((DateTime?) obj.locked_date) &&
|
||||
(owner == null && obj.owner == null || owner.EqualsDynamic(obj.owner)) &&
|
||||
question_id.TrueEquals((int?) obj.question_id) &&
|
||||
score.TrueEquals((int?) obj.score) &&
|
||||
share_link.TrueEqualsString((string) obj.share_link) &&
|
||||
tags.TrueEqualsString((IEnumerable<string>) obj.tags) &&
|
||||
title.TrueEqualsString((string) obj.title) &&
|
||||
up_vote_count.TrueEquals((int?) obj.up_vote_count) &&
|
||||
upvoted.TrueEquals((bool?) obj.upvoted);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum BadgeRank : byte
|
||||
{
|
||||
bronze = 3,
|
||||
silver = 2,
|
||||
gold = 1
|
||||
}
|
||||
|
||||
public enum BadgeType
|
||||
{
|
||||
named = 1,
|
||||
tag_based = 2
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Badge : IGenericEquality<Badge>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? badge_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public BadgeRank? rank { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string description { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? award_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public BadgeType? badge_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public ShallowUser user { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
public bool Equals(Badge obj)
|
||||
{
|
||||
return
|
||||
award_count.TrueEquals(obj.award_count) &&
|
||||
badge_id.TrueEquals(obj.badge_id) &&
|
||||
badge_type.TrueEquals(obj.badge_type) &&
|
||||
description.TrueEqualsString(obj.description) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
name.TrueEqualsString(obj.name) &&
|
||||
rank.TrueEquals(obj.rank) &&
|
||||
user.TrueEquals(obj.user);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
award_count.TrueEquals((int?) obj.award_count) &&
|
||||
badge_id.TrueEquals((int?) obj.badge_id) &&
|
||||
badge_type.TrueEquals((BadgeType?) obj.badge_type) &&
|
||||
description.TrueEqualsString((string) obj.description) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
name.TrueEqualsString((string) obj.name) &&
|
||||
rank.TrueEquals((BadgeRank?) obj.rank) &&
|
||||
(user == null && obj.user == null || user.EqualsDynamic(obj.user));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum PostType : byte
|
||||
{
|
||||
question = 1,
|
||||
answer = 2
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Comment : IGenericEquality<Comment>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? comment_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public PostType? post_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? score { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public bool? edited { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public ShallowUser owner { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public ShallowUser reply_to_user { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public string body_markdown { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public bool? upvoted { get; set; }
|
||||
|
||||
public bool Equals(Comment obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
body_markdown.TrueEqualsString(obj.body_markdown) &&
|
||||
comment_id.TrueEquals(obj.comment_id) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
edited.TrueEquals(obj.edited) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
owner.TrueEquals(obj.owner) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
post_type.TrueEquals(obj.post_type) &&
|
||||
reply_to_user.TrueEquals(obj.reply_to_user) &&
|
||||
score.TrueEquals(obj.score) &&
|
||||
upvoted.TrueEquals(obj.upvoted);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
body_markdown.TrueEqualsString((string) obj.body_markdown) &&
|
||||
comment_id.TrueEquals((int?) obj.comment_id) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
edited.TrueEquals((bool?) obj.edited) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
(owner == null && obj.owner == null || owner.EqualsDynamic(obj.owner)) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
post_type.TrueEquals((PostType?) obj.post_type) &&
|
||||
(reply_to_user == null && obj.reply_to_user == null ||
|
||||
reply_to_user.EqualsDynamic(obj.reply_to_user)) &&
|
||||
score.TrueEquals((int?) obj.score) &&
|
||||
upvoted.TrueEquals((bool?) obj.upvoted);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Error : IGenericEquality<Error>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? error_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string error_name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string description { get; set; }
|
||||
|
||||
public bool Equals(Error obj)
|
||||
{
|
||||
return
|
||||
error_id.TrueEquals(obj.error_id) &&
|
||||
error_name.TrueEqualsString(obj.error_name) &&
|
||||
description.TrueEqualsString(obj.description);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
error_id.TrueEquals((int?) obj.error_id) &&
|
||||
error_name.TrueEqualsString((string) obj.error_name) &&
|
||||
description.TrueEqualsString((string) obj.description);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum EventType : byte
|
||||
{
|
||||
question_posted = 1,
|
||||
answer_posted = 2,
|
||||
comment_posted = 3,
|
||||
post_edited = 4,
|
||||
user_created = 5
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Event : IGenericEquality<Event>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public EventType? event_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? event_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string excerpt { get; set; }
|
||||
|
||||
public bool Equals(Event obj)
|
||||
{
|
||||
return
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
event_id.TrueEquals(obj.event_id) &&
|
||||
event_type.TrueEquals(obj.event_type) &&
|
||||
excerpt.TrueEqualsString(obj.excerpt) &&
|
||||
link.TrueEqualsString(obj.link);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
event_id.TrueEquals((int?) obj.event_id) &&
|
||||
event_type.TrueEquals((EventType?) obj.event_type) &&
|
||||
excerpt.TrueEqualsString((string) obj.excerpt) &&
|
||||
link.TrueEqualsString((string) obj.link);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,688 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class MobileFeed : IGenericEquality<MobileFeed>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public List<MobileQuestion> hot_questions { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public List<MobileInboxItem> inbox_items { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public List<MobileQuestion> likely_to_answer_questions { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public List<MobileRepChange> reputation_events { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public List<MobileQuestion> cross_site_interesting_questions { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public List<MobileBadgeAward> badges { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public List<MobilePrivilege> earned_privileges { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public List<MobilePrivilege> upcoming_privileges { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public List<MobileCommunityBulletin> community_bulletins { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public List<MobileAssociationBonus> association_bonuses { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public List<MobileCareersJobAd> careers_job_ads { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public List<MobileBannerAd> banner_ads { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public long? before { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public long? since { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(15), oldmsgpack::MessagePack.Key(15 - 1), newmsgpack::MessagePack.Key(15 - 1)]
|
||||
public int? account_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(16), oldmsgpack::MessagePack.Key(16 - 1), newmsgpack::MessagePack.Key(16 - 1)]
|
||||
public MobileUpdateNotice update_notice { get; set; }
|
||||
|
||||
public bool Equals(MobileFeed obj)
|
||||
{
|
||||
return
|
||||
account_id == obj.account_id &&
|
||||
association_bonuses.TrueEqualsList(obj.association_bonuses) &&
|
||||
badges.TrueEqualsList(obj.badges) &&
|
||||
banner_ads.TrueEqualsList(obj.banner_ads) &&
|
||||
before == obj.before &&
|
||||
careers_job_ads.TrueEqualsList(obj.careers_job_ads) &&
|
||||
community_bulletins.TrueEqualsList(obj.community_bulletins) &&
|
||||
cross_site_interesting_questions.TrueEqualsList(obj.cross_site_interesting_questions) &&
|
||||
earned_privileges.TrueEqualsList(obj.earned_privileges) &&
|
||||
hot_questions.TrueEqualsList(obj.hot_questions) &&
|
||||
inbox_items.TrueEqualsList(obj.inbox_items) &&
|
||||
likely_to_answer_questions.TrueEqualsList(obj.likely_to_answer_questions) &&
|
||||
reputation_events.TrueEqualsList(obj.reputation_events) &&
|
||||
since == obj.since &&
|
||||
upcoming_privileges.TrueEqualsList(obj.upcoming_privileges) &&
|
||||
update_notice.TrueEquals(obj.update_notice);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
account_id == (int?) obj.account_id &&
|
||||
association_bonuses.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.association_bonuses) &&
|
||||
badges.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.badges) &&
|
||||
banner_ads.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.banner_ads) &&
|
||||
before == (long?) obj.before &&
|
||||
careers_job_ads.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.careers_job_ads) &&
|
||||
community_bulletins.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.community_bulletins) &&
|
||||
cross_site_interesting_questions.TrueEqualsListDynamic(
|
||||
(IEnumerable<dynamic>) obj.cross_site_interesting_questions) &&
|
||||
earned_privileges.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.earned_privileges) &&
|
||||
hot_questions.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.hot_questions) &&
|
||||
inbox_items.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.inbox_items) &&
|
||||
likely_to_answer_questions.TrueEqualsListDynamic(
|
||||
(IEnumerable<dynamic>) obj.likely_to_answer_questions) &&
|
||||
reputation_events.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.reputation_events) &&
|
||||
since == (long?) obj.since &&
|
||||
upcoming_privileges.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.upcoming_privileges) &&
|
||||
(update_notice == null && obj.update_notice == null || update_notice.EqualsDynamic(obj.update_notice));
|
||||
}
|
||||
}
|
||||
|
||||
public interface IMobileFeedBase<T> : IGenericEquality<T>
|
||||
{
|
||||
int? group_id { get; set; }
|
||||
long? added_date { get; set; }
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileQuestion : IMobileFeedBase<MobileQuestion>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public long? question_creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public long? last_activity_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public List<string> tags { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public string site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public bool? is_deleted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public bool? has_accepted_answer { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public int? answer_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobileQuestion obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
answer_count == obj.answer_count &&
|
||||
group_id == obj.group_id &&
|
||||
has_accepted_answer == obj.has_accepted_answer &&
|
||||
is_deleted == obj.is_deleted &&
|
||||
last_activity_date == obj.last_activity_date &&
|
||||
question_creation_date == obj.question_creation_date &&
|
||||
question_id == obj.question_id &&
|
||||
site == obj.site &&
|
||||
tags.TrueEqualsString(obj.tags) &&
|
||||
title == obj.title;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
answer_count == (int?) obj.answer_count &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
has_accepted_answer == (bool?) obj.has_accepted_answer &&
|
||||
is_deleted == (bool?) obj.is_deleted &&
|
||||
last_activity_date == (long?) obj.last_activity_date &&
|
||||
question_creation_date == (long?) obj.question_creation_date &&
|
||||
question_id == (int?) obj.question_id &&
|
||||
site == (string) obj.site &&
|
||||
tags.TrueEqualsString((IEnumerable<string>) obj.tags) &&
|
||||
title == (string) obj.title;
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileRepChange : IMobileFeedBase<MobileRepChange>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? rep_change { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobileRepChange obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
group_id == obj.group_id &&
|
||||
link == obj.link &&
|
||||
rep_change == obj.rep_change &&
|
||||
site == obj.site &&
|
||||
title == obj.title;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
link == (string) obj.link &&
|
||||
rep_change == (int?) obj.rep_change &&
|
||||
site == (string) obj.site &&
|
||||
title == (string) obj.title;
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileInboxItem : IMobileFeedBase<MobileInboxItem>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? answer_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? comment_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public long? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public string item_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public string site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobileInboxItem obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
answer_id == obj.answer_id &&
|
||||
body == obj.body &&
|
||||
comment_id == obj.comment_id &&
|
||||
creation_date == obj.creation_date &&
|
||||
group_id == obj.group_id &&
|
||||
item_type == obj.item_type &&
|
||||
link == obj.link &&
|
||||
question_id == obj.question_id &&
|
||||
site == obj.site &&
|
||||
title == obj.title;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
answer_id == (int?) obj.answer_id &&
|
||||
body == (string) obj.body &&
|
||||
comment_id == (int?) obj.comment_id &&
|
||||
creation_date == (long?) obj.creation_date &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
item_type == (string) obj.item_type &&
|
||||
link == (string) obj.link &&
|
||||
question_id == (int?) obj.question_id &&
|
||||
site == (string) obj.site &&
|
||||
title == (string) obj.title;
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileBadgeAward : IMobileFeedBase<MobileBadgeAward>
|
||||
{
|
||||
public enum BadgeRank : byte
|
||||
{
|
||||
bronze = 1,
|
||||
silver = 2,
|
||||
gold = 3
|
||||
}
|
||||
|
||||
public enum BadgeType
|
||||
{
|
||||
named = 1,
|
||||
tag_based = 2
|
||||
}
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string badge_name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string badge_description { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? badge_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public BadgeRank? rank { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public BadgeType? badge_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobileBadgeAward obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
badge_description == obj.badge_description &&
|
||||
badge_id == obj.badge_id &&
|
||||
badge_name == obj.badge_name &&
|
||||
badge_type == obj.badge_type &&
|
||||
group_id == obj.group_id &&
|
||||
link == obj.link &&
|
||||
post_id == obj.post_id &&
|
||||
rank == obj.rank &&
|
||||
site == obj.site;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
badge_description == (string) obj.badge_description &&
|
||||
badge_id == (int?) obj.badge_id &&
|
||||
badge_name == (string) obj.badge_name &&
|
||||
badge_type == (BadgeType?) obj.badge_type &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
link == (string) obj.link &&
|
||||
post_id == (int?) obj.post_id &&
|
||||
rank == (BadgeRank?) obj.rank &&
|
||||
site == (string) obj.site;
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobilePrivilege : IMobileFeedBase<MobilePrivilege>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string privilege_short_description { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string privilege_long_description { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? privilege_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? reputation_required { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobilePrivilege obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
group_id == obj.group_id &&
|
||||
link == obj.link &&
|
||||
privilege_id == obj.privilege_id &&
|
||||
privilege_long_description == obj.privilege_long_description &&
|
||||
privilege_short_description == obj.privilege_short_description &&
|
||||
reputation_required == obj.reputation_required &&
|
||||
site == obj.site;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
link == (string) obj.link &&
|
||||
privilege_id == (int?) obj.privilege_id &&
|
||||
privilege_long_description == (string) obj.privilege_long_description &&
|
||||
privilege_short_description == (string) obj.privilege_short_description &&
|
||||
reputation_required == (int?) obj.reputation_required &&
|
||||
site == (string) obj.site;
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileCommunityBulletin : IMobileFeedBase<MobileCommunityBulletin>
|
||||
{
|
||||
public enum CommunityBulletinType : byte
|
||||
{
|
||||
blog_post = 1,
|
||||
featured_meta_question = 2,
|
||||
upcoming_event = 3
|
||||
}
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public CommunityBulletinType? bulletin_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public long? begin_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public long? end_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public string custom_date_string { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public List<string> tags { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public bool? is_deleted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public bool? has_accepted_answer { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public int? answer_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public bool? is_promoted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobileCommunityBulletin obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
answer_count == obj.answer_count &&
|
||||
begin_date == obj.begin_date &&
|
||||
bulletin_type == obj.bulletin_type &&
|
||||
custom_date_string == obj.custom_date_string &&
|
||||
end_date == obj.end_date &&
|
||||
group_id == obj.group_id &&
|
||||
has_accepted_answer == obj.has_accepted_answer &&
|
||||
is_deleted == obj.is_deleted &&
|
||||
is_promoted == obj.is_promoted &&
|
||||
link == obj.link &&
|
||||
site == obj.site &&
|
||||
tags.TrueEqualsString(obj.tags) &&
|
||||
title == obj.title;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
answer_count == (int?) obj.answer_count &&
|
||||
begin_date == (long?) obj.begin_date &&
|
||||
bulletin_type == (CommunityBulletinType?) obj.bulletin_type &&
|
||||
custom_date_string == (string) obj.custom_date_string &&
|
||||
end_date == (long?) obj.end_date &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
has_accepted_answer == (bool?) obj.has_accepted_answer &&
|
||||
is_deleted == (bool?) obj.is_deleted &&
|
||||
is_promoted == (bool?) obj.is_promoted &&
|
||||
link == (string) obj.link &&
|
||||
site == (string) obj.site &&
|
||||
tags.TrueEqualsString((IEnumerable<string>) obj.tags) &&
|
||||
title == (string) obj.title;
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileAssociationBonus : IMobileFeedBase<MobileAssociationBonus>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? amount { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobileAssociationBonus obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
amount == obj.amount &&
|
||||
group_id == obj.group_id &&
|
||||
site == obj.site;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
amount == (int?) obj.amount &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
site == (string) obj.site;
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileCareersJobAd : IMobileFeedBase<MobileCareersJobAd>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? job_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string company_name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public string location { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobileCareersJobAd obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
company_name == obj.company_name &&
|
||||
group_id == obj.group_id &&
|
||||
job_id == obj.job_id &&
|
||||
link == obj.link &&
|
||||
location == obj.location &&
|
||||
title == obj.title;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
company_name == (string) obj.company_name &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
job_id == (int?) obj.job_id &&
|
||||
link == (string) obj.link &&
|
||||
location == (string) obj.location &&
|
||||
title == (string) obj.title;
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileBannerAd : IMobileFeedBase<MobileBannerAd>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public List<MobileBannerAdImage> images { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? group_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public long? added_date { get; set; }
|
||||
|
||||
public bool Equals(MobileBannerAd obj)
|
||||
{
|
||||
return
|
||||
added_date == obj.added_date &&
|
||||
group_id == obj.group_id &&
|
||||
images.TrueEqualsList(obj.images) &&
|
||||
link == obj.link;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
added_date == (long?) obj.added_date &&
|
||||
group_id == (int?) obj.group_id &&
|
||||
images.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.images) &&
|
||||
link == (string) obj.link;
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileBannerAdImage : IGenericEquality<MobileBannerAdImage>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string image_url { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? width { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? height { get; set; }
|
||||
|
||||
public bool Equals(MobileBannerAdImage obj)
|
||||
{
|
||||
return
|
||||
height == obj.height &&
|
||||
image_url == obj.image_url &&
|
||||
width == obj.width;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
height == (int?) obj.height &&
|
||||
image_url == (string) obj.image_url &&
|
||||
width == (int?) obj.width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public sealed class MobileUpdateNotice : IGenericEquality<MobileUpdateNotice>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public bool? should_update { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string message { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string minimum_supported_version { get; set; }
|
||||
|
||||
public bool Equals(MobileUpdateNotice obj)
|
||||
{
|
||||
return
|
||||
message == obj.message &&
|
||||
minimum_supported_version == obj.minimum_supported_version &&
|
||||
should_update == obj.should_update;
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
message == (string) obj.message &&
|
||||
minimum_supported_version == (string) obj.minimum_supported_version &&
|
||||
should_update == (bool?) obj.should_update;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class FlagOption : IGenericEquality<FlagOption>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? option_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public bool? requires_comment { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public bool? requires_site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public bool? requires_question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public string description { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public List<FlagOption> sub_options { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public bool? has_flagged { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public int? count { get; set; }
|
||||
|
||||
public bool Equals(FlagOption obj)
|
||||
{
|
||||
return
|
||||
count.TrueEquals(obj.count) &&
|
||||
description.TrueEqualsString(obj.description) &&
|
||||
has_flagged.TrueEquals(obj.has_flagged) &&
|
||||
option_id.TrueEquals(obj.option_id) &&
|
||||
requires_comment.TrueEquals(obj.requires_comment) &&
|
||||
requires_question_id.TrueEquals(obj.requires_question_id) &&
|
||||
requires_site.TrueEquals(obj.requires_site) &&
|
||||
sub_options.TrueEqualsList(obj.sub_options) &&
|
||||
title.TrueEqualsString(obj.title);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
count.TrueEquals((int?) obj.count) &&
|
||||
description.TrueEqualsString((string) obj.description) &&
|
||||
has_flagged.TrueEquals((bool?) obj.has_flagged) &&
|
||||
option_id.TrueEquals((int?) obj.option_id) &&
|
||||
requires_comment.TrueEquals((bool?) obj.requires_comment) &&
|
||||
requires_question_id.TrueEquals((bool?) obj.requires_question_id) &&
|
||||
requires_site.TrueEquals((bool?) obj.requires_site) &&
|
||||
sub_options.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.sub_options) &&
|
||||
title.TrueEqualsString((string) obj.title);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum InboxItemType
|
||||
{
|
||||
comment = 1,
|
||||
chat_message = 2,
|
||||
new_answer = 3,
|
||||
careers_message = 4,
|
||||
careers_invitations = 5,
|
||||
meta_question = 6,
|
||||
post_notice = 7,
|
||||
moderator_message = 8
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class InboxItem : IGenericEquality<InboxItem>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public InboxItemType? item_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? answer_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? comment_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public bool? is_unread { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public Info.Site site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
public bool Equals(InboxItem obj)
|
||||
{
|
||||
return
|
||||
answer_id.TrueEquals(obj.answer_id) &&
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
comment_id.TrueEquals(obj.comment_id) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
is_unread.TrueEquals(obj.is_unread) &&
|
||||
item_type.TrueEquals(obj.item_type) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
question_id.TrueEquals(obj.question_id) &&
|
||||
site.TrueEquals(obj.site) &&
|
||||
title.TrueEqualsString(obj.title);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
answer_id.TrueEquals((int?) obj.answer_id) &&
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
comment_id.TrueEquals((int?) obj.comment_id) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
is_unread.TrueEquals((bool?) obj.is_unread) &&
|
||||
item_type.TrueEquals((InboxItemType?) obj.item_type) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
question_id.TrueEquals((int?) obj.question_id) &&
|
||||
(site == null && obj.site == null || site.EqualsDynamic(obj.site)) &&
|
||||
title.TrueEqualsString((string) obj.title);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,272 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Info : IGenericEquality<Info>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? total_questions { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? total_unanswered { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? total_accepted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? total_answers { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public decimal? questions_per_minute { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public decimal? answers_per_minute { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? total_comments { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public int? total_votes { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public int? total_badges { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public decimal? badges_per_minute { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public int? total_users { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public int? new_active_users { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public string api_revision { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public Site site { get; set; }
|
||||
|
||||
public bool Equals(Info obj)
|
||||
{
|
||||
return
|
||||
answers_per_minute.TrueEquals(obj.answers_per_minute) &&
|
||||
api_revision.TrueEqualsString(obj.api_revision) &&
|
||||
badges_per_minute.TrueEquals(obj.badges_per_minute) &&
|
||||
new_active_users.TrueEquals(obj.new_active_users) &&
|
||||
questions_per_minute.TrueEquals(obj.questions_per_minute) &&
|
||||
site.TrueEquals(obj.site) &&
|
||||
total_accepted.TrueEquals(obj.total_accepted) &&
|
||||
total_answers.TrueEquals(obj.total_answers) &&
|
||||
total_badges.TrueEquals(obj.total_badges) &&
|
||||
total_comments.TrueEquals(obj.total_comments) &&
|
||||
total_questions.TrueEquals(obj.total_questions) &&
|
||||
total_unanswered.TrueEquals(obj.total_unanswered) &&
|
||||
total_users.TrueEquals(obj.total_users) &&
|
||||
total_votes.TrueEquals(obj.total_votes);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
answers_per_minute.TrueEquals((decimal?) obj.answers_per_minute) &&
|
||||
api_revision.TrueEqualsString((string) obj.api_revision) &&
|
||||
badges_per_minute.TrueEquals((decimal?) obj.badges_per_minute) &&
|
||||
new_active_users.TrueEquals((int?) obj.new_active_users) &&
|
||||
questions_per_minute.TrueEquals((decimal?) obj.questions_per_minute) &&
|
||||
(site == null && obj.site == null || site.EqualsDynamic(obj.site)) &&
|
||||
total_accepted.TrueEquals((int?) obj.total_accepted) &&
|
||||
total_answers.TrueEquals((int?) obj.total_answers) &&
|
||||
total_badges.TrueEquals((int?) obj.total_badges) &&
|
||||
total_comments.TrueEquals((int?) obj.total_comments) &&
|
||||
total_questions.TrueEquals((int?) obj.total_questions) &&
|
||||
total_unanswered.TrueEquals((int?) obj.total_unanswered) &&
|
||||
total_users.TrueEquals((int?) obj.total_users) &&
|
||||
total_votes.TrueEquals((int?) obj.total_votes);
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Site : IGenericEquality<Site>
|
||||
{
|
||||
public enum SiteState
|
||||
{
|
||||
normal,
|
||||
closed_beta,
|
||||
open_beta,
|
||||
linked_meta
|
||||
}
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string site_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string logo_url { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string api_site_parameter { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string site_url { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public string audience { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public string icon_url { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public List<string> aliases { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public SiteState? site_state { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public Styling styling { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public DateTime? closed_beta_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public DateTime? open_beta_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public DateTime? launch_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public string favicon_url { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(15), oldmsgpack::MessagePack.Key(15 - 1), newmsgpack::MessagePack.Key(15 - 1)]
|
||||
public List<RelatedSite> related_sites { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(16), oldmsgpack::MessagePack.Key(16 - 1), newmsgpack::MessagePack.Key(16 - 1)]
|
||||
public string twitter_account { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(17), oldmsgpack::MessagePack.Key(17 - 1), newmsgpack::MessagePack.Key(17 - 1)]
|
||||
public List<string> markdown_extensions { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(18), oldmsgpack::MessagePack.Key(18 - 1), newmsgpack::MessagePack.Key(18 - 1)]
|
||||
public string high_resolution_icon_url { get; set; }
|
||||
|
||||
public bool Equals(Site obj)
|
||||
{
|
||||
return
|
||||
aliases.TrueEqualsString(obj.aliases) &&
|
||||
api_site_parameter.TrueEqualsString(obj.api_site_parameter) &&
|
||||
audience.TrueEqualsString(obj.audience) &&
|
||||
closed_beta_date.TrueEquals(obj.closed_beta_date) &&
|
||||
favicon_url.TrueEqualsString(obj.favicon_url) &&
|
||||
high_resolution_icon_url.TrueEqualsString(obj.high_resolution_icon_url) &&
|
||||
icon_url.TrueEqualsString(obj.icon_url) &&
|
||||
launch_date.TrueEquals(obj.launch_date) &&
|
||||
logo_url.TrueEqualsString(obj.logo_url) &&
|
||||
markdown_extensions.TrueEqualsString(obj.markdown_extensions) &&
|
||||
name.TrueEqualsString(obj.name) &&
|
||||
open_beta_date.TrueEquals(obj.open_beta_date) &&
|
||||
related_sites.TrueEqualsList(obj.related_sites) &&
|
||||
site_state.TrueEquals(obj.site_state) &&
|
||||
site_type.TrueEqualsString(obj.site_type) &&
|
||||
site_url.TrueEqualsString(obj.site_url) &&
|
||||
styling.TrueEquals(obj.styling) &&
|
||||
twitter_account.TrueEqualsString(obj.twitter_account);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
aliases.TrueEqualsString((IEnumerable<string>) obj.aliases) &&
|
||||
api_site_parameter.TrueEqualsString((string) obj.api_site_parameter) &&
|
||||
audience.TrueEqualsString((string) obj.audience) &&
|
||||
closed_beta_date.TrueEquals((DateTime?) obj.closed_beta_date) &&
|
||||
favicon_url.TrueEqualsString((string) obj.favicon_url) &&
|
||||
high_resolution_icon_url.TrueEqualsString((string) obj.high_resolution_icon_url) &&
|
||||
icon_url.TrueEqualsString((string) obj.icon_url) &&
|
||||
launch_date.TrueEquals((DateTime?) obj.launch_date) &&
|
||||
logo_url.TrueEqualsString((string) obj.logo_url) &&
|
||||
markdown_extensions.TrueEqualsString((IEnumerable<string>) obj.markdown_extensions) &&
|
||||
name.TrueEqualsString((string) obj.name) &&
|
||||
open_beta_date.TrueEquals((DateTime?) obj.open_beta_date) &&
|
||||
related_sites.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.related_sites) &&
|
||||
site_state.TrueEquals((SiteState?) obj.site_state) &&
|
||||
site_type.TrueEqualsString((string) obj.site_type) &&
|
||||
site_url.TrueEqualsString((string) obj.site_url) &&
|
||||
(styling == null && obj.styling == null || styling.EqualsDynamic(obj.styling)) &&
|
||||
twitter_account.TrueEqualsString((string) obj.twitter_account);
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Styling : IGenericEquality<Styling>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string link_color { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string tag_foreground_color { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string tag_background_color { get; set; }
|
||||
|
||||
public bool Equals(Styling obj)
|
||||
{
|
||||
return
|
||||
link_color.TrueEqualsString(obj.link_color) &&
|
||||
tag_background_color.TrueEqualsString(obj.tag_background_color) &&
|
||||
tag_foreground_color.TrueEqualsString(obj.tag_foreground_color);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
link_color.TrueEqualsString((string) obj.link_color) &&
|
||||
tag_background_color.TrueEqualsString((string) obj.tag_background_color) &&
|
||||
tag_foreground_color.TrueEqualsString((string) obj.tag_foreground_color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class RelatedSite : IGenericEquality<RelatedSite>
|
||||
{
|
||||
public enum SiteRelation
|
||||
{
|
||||
parent,
|
||||
meta,
|
||||
chat
|
||||
}
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string site_url { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public SiteRelation? relation { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string api_site_parameter { get; set; }
|
||||
|
||||
public bool Equals(RelatedSite obj)
|
||||
{
|
||||
return
|
||||
name.TrueEqualsString(obj.name) &&
|
||||
relation.TrueEquals(obj.relation) &&
|
||||
api_site_parameter.TrueEqualsString(obj.api_site_parameter);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
name.TrueEqualsString((string) obj.name) &&
|
||||
relation.TrueEquals((SiteRelation?) obj.relation) &&
|
||||
api_site_parameter.TrueEqualsString((string) obj.api_site_parameter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class NetworkUser : IGenericEquality<NetworkUser>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string site_name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string site_url { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? reputation { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? account_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public UserType? user_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public User.BadgeCount badge_counts { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public DateTime? last_access_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public int? answer_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public int? question_count { get; set; }
|
||||
|
||||
public bool Equals(NetworkUser obj)
|
||||
{
|
||||
return
|
||||
account_id.TrueEquals(obj.account_id) &&
|
||||
answer_count.TrueEquals(obj.answer_count) &&
|
||||
badge_counts.TrueEquals(obj.badge_counts) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
last_access_date.TrueEquals(obj.last_access_date) &&
|
||||
question_count.TrueEquals(obj.question_count) &&
|
||||
reputation.TrueEquals(obj.reputation) &&
|
||||
site_name.TrueEqualsString(obj.site_name) &&
|
||||
site_url.TrueEqualsString(obj.site_url) &&
|
||||
user_id.TrueEquals(obj.user_id) &&
|
||||
user_type.TrueEquals(obj.user_type);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
account_id.TrueEquals((int?) obj.account_id) &&
|
||||
answer_count.TrueEquals((int?) obj.answer_count) &&
|
||||
(badge_counts == null && obj.badge_counts == null || badge_counts.EqualsDynamic(obj.badge_counts)) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
last_access_date.TrueEquals((DateTime?) obj.last_access_date) &&
|
||||
question_count.TrueEquals((int?) obj.question_count) &&
|
||||
reputation.TrueEquals((int?) obj.reputation) &&
|
||||
site_name.TrueEqualsString((string) obj.site_name) &&
|
||||
site_url.TrueEqualsString((string) obj.site_url) &&
|
||||
user_id.TrueEquals((int?) obj.user_id) &&
|
||||
user_type.TrueEquals((UserType?) obj.user_type);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum NotificationType : byte
|
||||
{
|
||||
generic = 1,
|
||||
accounts_associated = 8,
|
||||
badge_earned = 5,
|
||||
profile_activity = 2,
|
||||
bounty_expired = 3,
|
||||
bounty_expires_in_one_day = 4,
|
||||
bounty_expires_in_three_days = 6,
|
||||
edit_suggested = 22,
|
||||
new_privilege = 9,
|
||||
post_migrated = 10,
|
||||
moderator_message = 11,
|
||||
registration_reminder = 12,
|
||||
substantive_edit = 23,
|
||||
reputation_bonus = 7,
|
||||
bounty_grace_period_started = 24
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Notification : IGenericEquality<Notification>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public NotificationType? notification_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public Info.Site site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public bool? is_unread { get; set; }
|
||||
|
||||
public bool Equals(Notification obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
site.TrueEquals(obj.site) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
is_unread.TrueEquals(obj.is_unread);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
(site == null && obj.site == null || site.EqualsDynamic(obj.site)) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
is_unread.TrueEquals((bool?) obj.is_unread);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,112 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Post : IGenericEquality<Post>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public PostType? post_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public ShallowUser owner { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public DateTime? last_activity_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public DateTime? last_edit_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public int? score { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public int? up_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public int? down_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public List<Comment> comments { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public bool? upvoted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public bool? downvoted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(15), oldmsgpack::MessagePack.Key(15 - 1), newmsgpack::MessagePack.Key(15 - 1)]
|
||||
public ShallowUser last_editor { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(16), oldmsgpack::MessagePack.Key(16 - 1), newmsgpack::MessagePack.Key(16 - 1)]
|
||||
public int? comment_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(17), oldmsgpack::MessagePack.Key(17 - 1), newmsgpack::MessagePack.Key(17 - 1)]
|
||||
public string body_markdown { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(18), oldmsgpack::MessagePack.Key(18 - 1), newmsgpack::MessagePack.Key(18 - 1)]
|
||||
public string share_link { get; set; }
|
||||
|
||||
public bool Equals(Post obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
body_markdown.TrueEqualsString(obj.body_markdown) &&
|
||||
comment_count.TrueEquals(obj.comment_count) &&
|
||||
comments.TrueEqualsList(obj.comments) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
down_vote_count.TrueEquals(obj.down_vote_count) &&
|
||||
downvoted.TrueEquals(obj.downvoted) &&
|
||||
last_activity_date.TrueEquals(obj.last_activity_date) &&
|
||||
last_edit_date.TrueEquals(obj.last_edit_date) &&
|
||||
last_editor.TrueEquals(obj.last_editor) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
owner.TrueEquals(obj.owner) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
post_type.TrueEquals(obj.post_type) &&
|
||||
score.TrueEquals(obj.score) &&
|
||||
share_link.TrueEqualsString(obj.share_link) &&
|
||||
up_vote_count.TrueEquals(obj.up_vote_count) &&
|
||||
upvoted.TrueEquals(obj.upvoted);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
body_markdown.TrueEqualsString((string) obj.body_markdown) &&
|
||||
comment_count.TrueEquals((int?) obj.comment_count) &&
|
||||
comments.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.comments) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
down_vote_count.TrueEquals((int?) obj.down_vote_count) &&
|
||||
downvoted.TrueEquals((bool?) obj.downvoted) &&
|
||||
last_activity_date.TrueEquals((DateTime?) obj.last_activity_date) &&
|
||||
last_edit_date.TrueEquals((DateTime?) obj.last_edit_date) &&
|
||||
(last_editor == null && obj.last_editor == null || last_editor.EqualsDynamic(obj.last_editor)) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
(owner == null && obj.owner == null || owner.EqualsDynamic(obj.owner)) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
post_type.TrueEquals((PostType?) obj.post_type) &&
|
||||
score.TrueEquals((int?) obj.score) &&
|
||||
share_link.TrueEqualsString((string) obj.share_link) &&
|
||||
up_vote_count.TrueEquals((int?) obj.up_vote_count) &&
|
||||
upvoted.TrueEquals((bool?) obj.upvoted);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Privilege : IGenericEquality<Privilege>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string short_description { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string description { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? reputation { get; set; }
|
||||
|
||||
public bool Equals(Privilege obj)
|
||||
{
|
||||
return
|
||||
description.TrueEqualsString(obj.description) &&
|
||||
reputation.TrueEquals(obj.reputation) &&
|
||||
short_description.TrueEqualsString(obj.short_description);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
description.TrueEqualsString((string) obj.description) &&
|
||||
reputation.TrueEquals((int?) obj.reputation) &&
|
||||
short_description.TrueEqualsString((string) obj.short_description);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,359 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Question : IGenericEquality<Question>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public DateTime? last_edit_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public DateTime? last_activity_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public DateTime? locked_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? score { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public DateTime? community_owned_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public int? answer_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public int? accepted_answer_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public MigrationInfo migrated_to { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public MigrationInfo migrated_from { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public DateTime? bounty_closes_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public int? bounty_amount { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public DateTime? closed_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(15), oldmsgpack::MessagePack.Key(15 - 1), newmsgpack::MessagePack.Key(15 - 1)]
|
||||
public DateTime? protected_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(16), oldmsgpack::MessagePack.Key(16 - 1), newmsgpack::MessagePack.Key(16 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(17), oldmsgpack::MessagePack.Key(17 - 1), newmsgpack::MessagePack.Key(17 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(18), oldmsgpack::MessagePack.Key(18 - 1), newmsgpack::MessagePack.Key(18 - 1)]
|
||||
public List<string> tags { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(19), oldmsgpack::MessagePack.Key(19 - 1), newmsgpack::MessagePack.Key(19 - 1)]
|
||||
public string closed_reason { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(20), oldmsgpack::MessagePack.Key(20 - 1), newmsgpack::MessagePack.Key(20 - 1)]
|
||||
public int? up_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(21), oldmsgpack::MessagePack.Key(21 - 1), newmsgpack::MessagePack.Key(21 - 1)]
|
||||
public int? down_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(22), oldmsgpack::MessagePack.Key(22 - 1), newmsgpack::MessagePack.Key(22 - 1)]
|
||||
public int? favorite_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(23), oldmsgpack::MessagePack.Key(23 - 1), newmsgpack::MessagePack.Key(23 - 1)]
|
||||
public int? view_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(24), oldmsgpack::MessagePack.Key(24 - 1), newmsgpack::MessagePack.Key(24 - 1)]
|
||||
public ShallowUser owner { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(25), oldmsgpack::MessagePack.Key(25 - 1), newmsgpack::MessagePack.Key(25 - 1)]
|
||||
public List<Comment> comments { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(26), oldmsgpack::MessagePack.Key(26 - 1), newmsgpack::MessagePack.Key(26 - 1)]
|
||||
public List<Answer> answers { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(27), oldmsgpack::MessagePack.Key(27 - 1), newmsgpack::MessagePack.Key(27 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(28), oldmsgpack::MessagePack.Key(28 - 1), newmsgpack::MessagePack.Key(28 - 1)]
|
||||
public bool? is_answered { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(29), oldmsgpack::MessagePack.Key(29 - 1), newmsgpack::MessagePack.Key(29 - 1)]
|
||||
public int? close_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(30), oldmsgpack::MessagePack.Key(30 - 1), newmsgpack::MessagePack.Key(30 - 1)]
|
||||
public int? reopen_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(31), oldmsgpack::MessagePack.Key(31 - 1), newmsgpack::MessagePack.Key(31 - 1)]
|
||||
public int? delete_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(32), oldmsgpack::MessagePack.Key(32 - 1), newmsgpack::MessagePack.Key(32 - 1)]
|
||||
public Notice notice { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(33), oldmsgpack::MessagePack.Key(33 - 1), newmsgpack::MessagePack.Key(33 - 1)]
|
||||
public bool? upvoted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(34), oldmsgpack::MessagePack.Key(34 - 1), newmsgpack::MessagePack.Key(34 - 1)]
|
||||
public bool? downvoted { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(35), oldmsgpack::MessagePack.Key(35 - 1), newmsgpack::MessagePack.Key(35 - 1)]
|
||||
public bool? favorited { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(36), oldmsgpack::MessagePack.Key(36 - 1), newmsgpack::MessagePack.Key(36 - 1)]
|
||||
public ShallowUser last_editor { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(37), oldmsgpack::MessagePack.Key(37 - 1), newmsgpack::MessagePack.Key(37 - 1)]
|
||||
public int? comment_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(38), oldmsgpack::MessagePack.Key(38 - 1), newmsgpack::MessagePack.Key(38 - 1)]
|
||||
public string body_markdown { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(39), oldmsgpack::MessagePack.Key(39 - 1), newmsgpack::MessagePack.Key(39 - 1)]
|
||||
public ClosedDetails closed_details { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(40), oldmsgpack::MessagePack.Key(40 - 1), newmsgpack::MessagePack.Key(40 - 1)]
|
||||
public string share_link { get; set; }
|
||||
|
||||
public bool Equals(Question obj)
|
||||
{
|
||||
return
|
||||
accepted_answer_id.TrueEquals(obj.accepted_answer_id) &&
|
||||
answer_count.TrueEquals(obj.answer_count) &&
|
||||
answers.TrueEqualsList(obj.answers) &&
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
body_markdown.TrueEqualsString(obj.body_markdown) &&
|
||||
bounty_amount.TrueEquals(obj.bounty_amount) &&
|
||||
bounty_closes_date.TrueEquals(obj.bounty_closes_date) &&
|
||||
close_vote_count.TrueEquals(obj.close_vote_count) &&
|
||||
closed_date.TrueEquals(obj.closed_date) &&
|
||||
closed_details.TrueEquals(obj.closed_details) &&
|
||||
closed_reason.TrueEqualsString(obj.closed_reason) &&
|
||||
comment_count.TrueEquals(obj.comment_count) &&
|
||||
comments.TrueEqualsList(obj.comments) &&
|
||||
community_owned_date.TrueEquals(obj.community_owned_date) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
delete_vote_count.TrueEquals(obj.delete_vote_count) &&
|
||||
down_vote_count.TrueEquals(obj.down_vote_count) &&
|
||||
downvoted.TrueEquals(obj.downvoted) &&
|
||||
favorite_count.TrueEquals(obj.favorite_count) &&
|
||||
favorited.TrueEquals(obj.favorited) &&
|
||||
is_answered.TrueEquals(obj.is_answered) &&
|
||||
last_activity_date.TrueEquals(obj.last_activity_date) &&
|
||||
last_edit_date.TrueEquals(obj.last_edit_date) &&
|
||||
last_editor.TrueEquals(obj.last_editor) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
locked_date.TrueEquals(obj.locked_date) &&
|
||||
migrated_from.TrueEquals(obj.migrated_from) &&
|
||||
migrated_to.TrueEquals(obj.migrated_to) &&
|
||||
notice.TrueEquals(obj.notice) &&
|
||||
owner.TrueEquals(obj.owner) &&
|
||||
protected_date.TrueEquals(obj.protected_date) &&
|
||||
question_id.TrueEquals(obj.question_id) &&
|
||||
reopen_vote_count.TrueEquals(obj.reopen_vote_count) &&
|
||||
score.TrueEquals(obj.score) &&
|
||||
share_link.TrueEqualsString(obj.share_link) &&
|
||||
tags.TrueEqualsString(obj.tags) &&
|
||||
title.TrueEqualsString(obj.title) &&
|
||||
up_vote_count.TrueEquals(obj.up_vote_count) &&
|
||||
upvoted.TrueEquals(obj.upvoted) &&
|
||||
view_count.TrueEquals(obj.view_count);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
accepted_answer_id.TrueEquals((int?) obj.accepted_answer_id) &&
|
||||
answer_count.TrueEquals((int?) obj.answer_count) &&
|
||||
answers.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.answers) &&
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
body_markdown.TrueEqualsString((string) obj.body_markdown) &&
|
||||
bounty_amount.TrueEquals((int?) obj.bounty_amount) &&
|
||||
bounty_closes_date.TrueEquals((DateTime?) obj.bounty_closes_date) &&
|
||||
close_vote_count.TrueEquals((int?) obj.close_vote_count) &&
|
||||
closed_date.TrueEquals((DateTime?) obj.closed_date) &&
|
||||
(closed_details == null && obj.closed_details == null ||
|
||||
closed_details.EqualsDynamic(obj.closed_details)) &&
|
||||
closed_reason.TrueEqualsString((string) obj.closed_reason) &&
|
||||
comment_count.TrueEquals((int?) obj.comment_count) &&
|
||||
comments.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.comments) &&
|
||||
community_owned_date.TrueEquals((DateTime?) obj.community_owned_date) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
delete_vote_count.TrueEquals((int?) obj.delete_vote_count) &&
|
||||
down_vote_count.TrueEquals((int?) obj.down_vote_count) &&
|
||||
downvoted.TrueEquals((bool?) obj.downvoted) &&
|
||||
favorite_count.TrueEquals((int?) obj.favorite_count) &&
|
||||
favorited.TrueEquals((bool?) obj.favorited) &&
|
||||
is_answered.TrueEquals((bool?) obj.is_answered) &&
|
||||
last_activity_date.TrueEquals((DateTime?) obj.last_activity_date) &&
|
||||
last_edit_date.TrueEquals((DateTime?) obj.last_edit_date) &&
|
||||
(last_editor == null && obj.last_editor == null || last_editor.EqualsDynamic(obj.last_editor)) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
locked_date.TrueEquals((DateTime?) obj.locked_date) &&
|
||||
(migrated_from == null && obj.migrated_from == null ||
|
||||
migrated_from.EqualsDynamic(obj.migrated_from)) &&
|
||||
(migrated_to == null && obj.migrated_to == null || migrated_to.EqualsDynamic(obj.migrated_to)) &&
|
||||
(notice == null && obj.notice == null || notice.EqualsDynamic(obj.notice)) &&
|
||||
(owner == null && obj.owner == null || owner.EqualsDynamic(obj.owner)) &&
|
||||
protected_date.TrueEquals((DateTime?) obj.protected_date) &&
|
||||
question_id.TrueEquals((int?) obj.question_id) &&
|
||||
reopen_vote_count.TrueEquals((int?) obj.reopen_vote_count) &&
|
||||
score.TrueEquals((int?) obj.score) &&
|
||||
share_link.TrueEqualsString((string) obj.share_link) &&
|
||||
tags.TrueEqualsString((IEnumerable<string>) obj.tags) &&
|
||||
title.TrueEqualsString((string) obj.title) &&
|
||||
up_vote_count.TrueEquals((int?) obj.up_vote_count) &&
|
||||
upvoted.TrueEquals((bool?) obj.upvoted) &&
|
||||
view_count.TrueEquals((int?) obj.view_count);
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class ClosedDetails : IGenericEquality<ClosedDetails>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public bool? on_hold { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string reason { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string description { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public List<ShallowUser> by_users { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public List<OriginalQuestion> original_questions { get; set; }
|
||||
|
||||
public bool Equals(ClosedDetails obj)
|
||||
{
|
||||
return
|
||||
by_users.TrueEqualsList(obj.by_users) &&
|
||||
description.TrueEqualsString(obj.description) &&
|
||||
on_hold.TrueEquals(obj.on_hold) &&
|
||||
original_questions.TrueEqualsList(obj.original_questions) &&
|
||||
reason.TrueEqualsString(obj.reason);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
var oq = obj.original_questions;
|
||||
var oqI = (IEnumerable<dynamic>) oq;
|
||||
|
||||
return
|
||||
by_users.TrueEqualsListDynamic((IEnumerable<dynamic>) obj.by_users) &&
|
||||
description.TrueEqualsString((string) obj.description) &&
|
||||
on_hold.TrueEquals((bool?) obj.on_hold) &&
|
||||
//this.original_questions.TrueEqualsListDynamic((IEnumerable<dynamic>)obj.original_questions) &&
|
||||
original_questions.TrueEqualsListDynamic(oqI) &&
|
||||
reason.TrueEqualsString((string) obj.reason);
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class OriginalQuestion : IGenericEquality<OriginalQuestion>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? answer_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? accepted_answer_id { get; set; }
|
||||
|
||||
public bool Equals(OriginalQuestion obj)
|
||||
{
|
||||
return
|
||||
accepted_answer_id.TrueEquals(obj.accepted_answer_id) &&
|
||||
answer_count.TrueEquals(obj.answer_count) &&
|
||||
question_id.TrueEquals(obj.question_id) &&
|
||||
title.TrueEqualsString(obj.title);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
accepted_answer_id.TrueEquals((int?) obj.accepted_answer_id) &&
|
||||
answer_count.TrueEquals((int?) obj.answer_count) &&
|
||||
question_id.TrueEquals((int?) obj.question_id) &&
|
||||
title.TrueEqualsString((string) obj.title);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Notice : IGenericEquality<Notice>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? owner_user_id { get; set; }
|
||||
|
||||
public bool Equals(Notice obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
owner_user_id.TrueEquals(obj.owner_user_id);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
owner_user_id.TrueEquals((int?) obj.owner_user_id);
|
||||
}
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class MigrationInfo : IGenericEquality<MigrationInfo>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public Info.Site other_site { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? on_date { get; set; }
|
||||
|
||||
public bool Equals(MigrationInfo obj)
|
||||
{
|
||||
return
|
||||
on_date.TrueEquals(obj.on_date) &&
|
||||
other_site.TrueEquals(obj.other_site) &&
|
||||
question_id.TrueEquals(obj.question_id);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
on_date.TrueEquals((DateTime?) obj.on_date) &&
|
||||
(other_site == null && obj.other_site == null || other_site.EqualsDynamic(obj.other_site)) &&
|
||||
question_id.TrueEquals((int?) obj.question_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum QuestionTimelineAction : byte
|
||||
{
|
||||
question = 1,
|
||||
answer = 2,
|
||||
comment = 3,
|
||||
unaccepted_answer = 4,
|
||||
accepted_answer = 5,
|
||||
vote_aggregate = 6,
|
||||
revision = 7,
|
||||
post_state_changed = 8
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class QuestionTimeline : IGenericEquality<QuestionTimeline>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public QuestionTimelineAction? timeline_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? comment_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string revision_guid { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? up_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? down_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public ShallowUser user { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public ShallowUser owner { get; set; }
|
||||
|
||||
public bool Equals(QuestionTimeline obj)
|
||||
{
|
||||
return
|
||||
comment_id.TrueEquals(obj.comment_id) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
down_vote_count.TrueEquals(obj.down_vote_count) &&
|
||||
owner.TrueEquals(obj.owner) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
question_id.TrueEquals(obj.question_id) &&
|
||||
revision_guid.TrueEqualsString(obj.revision_guid) &&
|
||||
timeline_type.TrueEquals(obj.timeline_type) &&
|
||||
up_vote_count.TrueEquals(obj.up_vote_count) &&
|
||||
user.TrueEquals(obj.user);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
comment_id.TrueEquals((int?) obj.comment_id) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
down_vote_count.TrueEquals((int?) obj.down_vote_count) &&
|
||||
(owner == null && obj.owner == null || owner.EqualsDynamic(obj.owner)) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
question_id.TrueEquals((int?) obj.question_id) &&
|
||||
revision_guid.TrueEqualsString((string) obj.revision_guid) &&
|
||||
timeline_type.TrueEquals((QuestionTimelineAction?) obj.timeline_type) &&
|
||||
up_vote_count.TrueEquals((int?) obj.up_vote_count) &&
|
||||
(user == null && obj.user == null || user.EqualsDynamic(obj.user));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum VoteType : byte
|
||||
{
|
||||
up_votes = 2,
|
||||
down_votes = 3,
|
||||
spam = 12,
|
||||
accepts = 1,
|
||||
bounties_won = 9,
|
||||
bounties_offered = 8,
|
||||
suggested_edits = 16
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Reputation : IGenericEquality<Reputation>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public PostType? post_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public VoteType? vote_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? reputation_change { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public DateTime? on_date { get; set; }
|
||||
|
||||
public bool Equals(Reputation obj)
|
||||
{
|
||||
return
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
on_date.TrueEquals(obj.on_date) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
post_type.TrueEquals(obj.post_type) &&
|
||||
reputation_change.TrueEquals(obj.reputation_change) &&
|
||||
title.TrueEqualsString(obj.title) &&
|
||||
user_id.TrueEquals(obj.user_id) &&
|
||||
vote_type.TrueEquals(obj.vote_type);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
on_date.TrueEquals((DateTime?) obj.on_date) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
post_type.TrueEquals((PostType?) obj.post_type) &&
|
||||
reputation_change.TrueEquals((int?) obj.reputation_change) &&
|
||||
title.TrueEqualsString((string) obj.title) &&
|
||||
user_id.TrueEquals((int?) obj.user_id) &&
|
||||
vote_type.TrueEquals((VoteType?) obj.vote_type);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class ReputationHistory : IGenericEquality<ReputationHistory>
|
||||
{
|
||||
public enum ReputationHistoryType : byte
|
||||
{
|
||||
asker_accepts_answer = 1,
|
||||
asker_unaccept_answer = 2,
|
||||
answer_accepted = 3,
|
||||
answer_unaccepted = 4,
|
||||
|
||||
voter_downvotes = 5,
|
||||
voter_undownvotes = 6,
|
||||
post_downvoted = 7,
|
||||
post_undownvoted = 8,
|
||||
|
||||
post_upvoted = 9,
|
||||
post_unupvoted = 10,
|
||||
|
||||
suggested_edit_approval_received = 11,
|
||||
|
||||
post_flagged_as_spam = 12,
|
||||
post_flagged_as_offensive = 13,
|
||||
|
||||
bounty_given = 14,
|
||||
bounty_earned = 15,
|
||||
bounty_cancelled = 16,
|
||||
|
||||
post_deleted = 17,
|
||||
post_undeleted = 18,
|
||||
|
||||
association_bonus = 19,
|
||||
arbitrary_reputation_change = 20,
|
||||
|
||||
vote_fraud_reversal = 21,
|
||||
|
||||
post_migrated = 22,
|
||||
|
||||
user_deleted = 23
|
||||
}
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? reputation_change { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public ReputationHistoryType? reputation_history_type { get; set; }
|
||||
|
||||
public bool Equals(ReputationHistory obj)
|
||||
{
|
||||
return
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
reputation_change.TrueEquals(obj.reputation_change) &&
|
||||
reputation_history_type.TrueEquals(obj.reputation_history_type) &&
|
||||
user_id.TrueEquals(obj.user_id);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
reputation_change.TrueEquals((int?) obj.reputation_change) &&
|
||||
reputation_history_type.TrueEquals((ReputationHistoryType?) obj.reputation_history_type) &&
|
||||
user_id.TrueEquals((int?) obj.user_id);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,108 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum RevisionType : byte
|
||||
{
|
||||
single_user = 1,
|
||||
vote_based = 2
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Revision : IGenericEquality<Revision>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string revision_guid { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? revision_number { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public RevisionType? revision_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public PostType? post_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public string comment { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public bool? is_rollback { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public string last_body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public string last_title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public List<string> last_tags { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public List<string> tags { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(15), oldmsgpack::MessagePack.Key(15 - 1), newmsgpack::MessagePack.Key(15 - 1)]
|
||||
public bool? set_community_wiki { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(16), oldmsgpack::MessagePack.Key(16 - 1), newmsgpack::MessagePack.Key(16 - 1)]
|
||||
public ShallowUser user { get; set; }
|
||||
|
||||
public bool Equals(Revision obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
comment.TrueEqualsString(obj.comment) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
is_rollback.TrueEquals(obj.is_rollback) &&
|
||||
last_body.TrueEqualsString(obj.last_body) &&
|
||||
last_tags.TrueEqualsString(obj.last_tags) &&
|
||||
last_title.TrueEqualsString(obj.last_title) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
post_type.TrueEquals(obj.post_type) &&
|
||||
revision_guid.TrueEqualsString(obj.revision_guid) &&
|
||||
revision_number.TrueEquals(obj.revision_number) &&
|
||||
revision_type.TrueEquals(obj.revision_type) &&
|
||||
set_community_wiki.TrueEquals(obj.set_community_wiki) &&
|
||||
tags.TrueEqualsString(obj.tags) &&
|
||||
title.TrueEqualsString(obj.title) &&
|
||||
user.TrueEquals(obj.user);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
comment.TrueEqualsString((string) obj.comment) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
is_rollback.TrueEquals((bool?) obj.is_rollback) &&
|
||||
last_body.TrueEqualsString((string) obj.last_body) &&
|
||||
last_tags.TrueEqualsString((IEnumerable<string>) obj.last_tags) &&
|
||||
last_title.TrueEqualsString((string) obj.last_title) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
post_type.TrueEquals((PostType?) obj.post_type) &&
|
||||
revision_guid.TrueEqualsString((string) obj.revision_guid) &&
|
||||
revision_number.TrueEquals((int?) obj.revision_number) &&
|
||||
revision_type.TrueEquals((RevisionType?) obj.revision_type) &&
|
||||
set_community_wiki.TrueEquals((bool?) obj.set_community_wiki) &&
|
||||
tags.TrueEqualsString((IEnumerable<string>) obj.tags) &&
|
||||
title.TrueEqualsString((string) obj.title) &&
|
||||
(user == null && obj.user == null || user.EqualsDynamic(obj.user));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,119 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum SearchExcerptItemType : byte
|
||||
{
|
||||
question = 1,
|
||||
answer = 2
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class SearchExcerpt : IGenericEquality<SearchExcerpt>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string excerpt { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? community_owned_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public DateTime? locked_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public DateTime? last_activity_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public ShallowUser owner { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public ShallowUser last_activity_user { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public int? score { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public SearchExcerptItemType? item_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public int? question_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public bool? is_answered { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public int? answer_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(15), oldmsgpack::MessagePack.Key(15 - 1), newmsgpack::MessagePack.Key(15 - 1)]
|
||||
public List<string> tags { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(16), oldmsgpack::MessagePack.Key(16 - 1), newmsgpack::MessagePack.Key(16 - 1)]
|
||||
public DateTime? closed_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(17), oldmsgpack::MessagePack.Key(17 - 1), newmsgpack::MessagePack.Key(17 - 1)]
|
||||
public int? answer_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(18), oldmsgpack::MessagePack.Key(18 - 1), newmsgpack::MessagePack.Key(18 - 1)]
|
||||
public bool? is_accepted { get; set; }
|
||||
|
||||
public bool Equals(SearchExcerpt obj)
|
||||
{
|
||||
return
|
||||
answer_count.TrueEquals(obj.answer_count) &&
|
||||
answer_id.TrueEquals(obj.answer_id) &&
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
closed_date.TrueEquals(obj.closed_date) &&
|
||||
community_owned_date.TrueEquals(obj.community_owned_date) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
excerpt.TrueEqualsString(obj.excerpt) &&
|
||||
is_accepted.TrueEquals(obj.is_accepted) &&
|
||||
is_answered.TrueEquals(obj.is_answered) &&
|
||||
item_type.TrueEquals(obj.item_type) &&
|
||||
last_activity_date.TrueEquals(obj.last_activity_date) &&
|
||||
last_activity_user.TrueEquals(obj.last_activity_user) &&
|
||||
locked_date.TrueEquals(obj.locked_date) &&
|
||||
owner.TrueEquals(obj.owner) &&
|
||||
question_id.TrueEquals(obj.question_id) &&
|
||||
score.TrueEquals(obj.score) &&
|
||||
tags.TrueEqualsString(obj.tags) &&
|
||||
title.TrueEqualsString(obj.title);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
answer_count.TrueEquals((int?) obj.answer_count) &&
|
||||
answer_id.TrueEquals((int?) obj.answer_id) &&
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
closed_date.TrueEquals((DateTime?) obj.closed_date) &&
|
||||
community_owned_date.TrueEquals((DateTime?) obj.community_owned_date) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
excerpt.TrueEqualsString((string) obj.excerpt) &&
|
||||
is_accepted.TrueEquals((bool?) obj.is_accepted) &&
|
||||
is_answered.TrueEquals((bool?) obj.is_answered) &&
|
||||
item_type.TrueEquals((SearchExcerptItemType?) obj.item_type) &&
|
||||
last_activity_date.TrueEquals((DateTime?) obj.last_activity_date) &&
|
||||
(last_activity_user == null && obj.last_activity_user == null ||
|
||||
last_activity_user.EqualsDynamic(obj.last_activity_user)) &&
|
||||
locked_date.TrueEquals((DateTime?) obj.locked_date) &&
|
||||
(owner == null && obj.owner == null || owner.EqualsDynamic(obj.owner)) &&
|
||||
question_id.TrueEquals((int?) obj.question_id) &&
|
||||
score.TrueEquals((int?) obj.score) &&
|
||||
tags.TrueEqualsString((IEnumerable<string>) obj.tags) &&
|
||||
title.TrueEqualsString((string) obj.title);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum UserType : byte
|
||||
{
|
||||
unregistered = 2,
|
||||
registered = 3,
|
||||
moderator = 4,
|
||||
does_not_exist = 255
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class ShallowUser : IGenericEquality<ShallowUser>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string display_name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? reputation { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public UserType? user_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string profile_image { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? accept_rate { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public User.BadgeCount badge_counts { get; set; }
|
||||
|
||||
public bool Equals(ShallowUser obj)
|
||||
{
|
||||
return
|
||||
accept_rate.TrueEquals(obj.accept_rate) &&
|
||||
badge_counts.TrueEquals(obj.badge_counts) &&
|
||||
display_name.TrueEqualsString(obj.display_name) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
profile_image.TrueEqualsString(obj.profile_image) &&
|
||||
reputation.TrueEquals(obj.reputation) &&
|
||||
user_id.TrueEquals(obj.user_id) &&
|
||||
user_type.TrueEquals(obj.user_type);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
accept_rate.TrueEquals((int?) obj.accept_rate) &&
|
||||
(badge_counts == null && obj.badge_counts == null || badge_counts.EqualsDynamic(obj.badge_counts)) &&
|
||||
display_name.TrueEqualsString((string) obj.display_name) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
profile_image.TrueEqualsString((string) obj.profile_image) &&
|
||||
reputation.TrueEquals((int?) obj.reputation) &&
|
||||
user_id.TrueEquals((int?) obj.user_id) &&
|
||||
user_type.TrueEquals((UserType?) obj.user_type);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class SuggestedEdit : IGenericEquality<SuggestedEdit>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? suggested_edit_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public PostType? post_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public List<string> tags { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public string comment { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public DateTime? approval_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public DateTime? rejection_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public ShallowUser proposing_user { get; set; }
|
||||
|
||||
public bool Equals(SuggestedEdit obj)
|
||||
{
|
||||
return
|
||||
approval_date.TrueEquals(obj.approval_date) &&
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
comment.TrueEqualsString(obj.comment) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
post_type.TrueEquals(obj.post_type) &&
|
||||
proposing_user.TrueEquals(obj.proposing_user) &&
|
||||
rejection_date.TrueEquals(obj.rejection_date) &&
|
||||
suggested_edit_id.TrueEquals(obj.suggested_edit_id) &&
|
||||
tags.TrueEqualsString(obj.tags) &&
|
||||
title.TrueEqualsString(obj.title);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
approval_date.TrueEquals((DateTime?) obj.approval_date) &&
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
comment.TrueEqualsString((string) obj.comment) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
post_type.TrueEquals((PostType?) obj.post_type) &&
|
||||
(proposing_user == null && obj.proposing_user == null ||
|
||||
proposing_user.EqualsDynamic(obj.proposing_user)) &&
|
||||
rejection_date.TrueEquals((DateTime?) obj.rejection_date) &&
|
||||
suggested_edit_id.TrueEquals((int?) obj.suggested_edit_id) &&
|
||||
tags.TrueEqualsString((IEnumerable<string>) obj.tags) &&
|
||||
title.TrueEqualsString((string) obj.title);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class Tag : IGenericEquality<Tag>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public bool? is_required { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public bool? is_moderator_only { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public bool? has_synonyms { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public DateTime? last_activity_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public List<string> synonyms { get; set; }
|
||||
|
||||
public bool Equals(Tag obj)
|
||||
{
|
||||
return
|
||||
count.TrueEquals(obj.count) &&
|
||||
has_synonyms.TrueEquals(obj.has_synonyms) &&
|
||||
is_moderator_only.TrueEquals(obj.is_moderator_only) &&
|
||||
is_required.TrueEquals(obj.is_required) &&
|
||||
last_activity_date.TrueEquals(obj.last_activity_date) &&
|
||||
name.TrueEqualsString(obj.name) &&
|
||||
synonyms.TrueEqualsString(obj.synonyms) &&
|
||||
user_id.TrueEquals(obj.user_id);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
count.TrueEquals((int?) obj.count) &&
|
||||
has_synonyms.TrueEquals((bool?) obj.has_synonyms) &&
|
||||
is_moderator_only.TrueEquals((bool?) obj.is_moderator_only) &&
|
||||
is_required.TrueEquals((bool?) obj.is_required) &&
|
||||
last_activity_date.TrueEquals((DateTime?) obj.last_activity_date) &&
|
||||
name.TrueEqualsString((string) obj.name) &&
|
||||
synonyms.TrueEqualsString((IEnumerable<string>) obj.synonyms) &&
|
||||
user_id.TrueEquals((int?) obj.user_id);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class TagScore : IGenericEquality<TagScore>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public ShallowUser user { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? score { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? post_count { get; set; }
|
||||
|
||||
public bool Equals(TagScore obj)
|
||||
{
|
||||
return
|
||||
post_count.TrueEquals(obj.post_count) &&
|
||||
score.TrueEquals(obj.score) &&
|
||||
user.TrueEquals(obj.user);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
post_count.TrueEquals((int?) obj.post_count) &&
|
||||
score.TrueEquals((int?) obj.score) &&
|
||||
(user == null && obj.user == null || user.EqualsDynamic(obj.user));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class TagSynonym : IGenericEquality<TagSynonym>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string from_tag { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string to_tag { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? applied_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public DateTime? last_applied_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
public bool Equals(TagSynonym obj)
|
||||
{
|
||||
return
|
||||
applied_count.TrueEquals(obj.applied_count) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
from_tag.TrueEqualsString(obj.from_tag) &&
|
||||
last_applied_date.TrueEquals(obj.last_applied_date) &&
|
||||
to_tag.TrueEqualsString(obj.to_tag);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
applied_count.TrueEquals((int?) obj.applied_count) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
from_tag.TrueEqualsString((string) obj.from_tag) &&
|
||||
last_applied_date.TrueEquals((DateTime?) obj.last_applied_date) &&
|
||||
to_tag.TrueEqualsString((string) obj.to_tag);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class TagWiki : IGenericEquality<TagWiki>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string tag_name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string body { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public string excerpt { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public DateTime? body_last_edit_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public DateTime? excerpt_last_edit_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public ShallowUser last_body_editor { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public ShallowUser last_excerpt_editor { get; set; }
|
||||
|
||||
public bool Equals(TagWiki obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString(obj.body) &&
|
||||
body_last_edit_date.TrueEquals(obj.body_last_edit_date) &&
|
||||
excerpt.TrueEqualsString(obj.excerpt) &&
|
||||
excerpt_last_edit_date.TrueEquals(obj.excerpt_last_edit_date) &&
|
||||
last_body_editor.TrueEquals(obj.last_body_editor) &&
|
||||
last_excerpt_editor.TrueEquals(obj.last_excerpt_editor) &&
|
||||
tag_name.TrueEqualsString(obj.tag_name);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
body.TrueEqualsString((string) obj.body) &&
|
||||
body_last_edit_date.TrueEquals((DateTime?) obj.body_last_edit_date) &&
|
||||
excerpt.TrueEqualsString((string) obj.excerpt) &&
|
||||
excerpt_last_edit_date.TrueEquals((DateTime?) obj.excerpt_last_edit_date) &&
|
||||
(last_body_editor == null && obj.last_body_editor == null ||
|
||||
last_body_editor.EqualsDynamic(obj.last_body_editor)) &&
|
||||
(last_excerpt_editor == null && obj.last_excerpt_editor == null ||
|
||||
last_excerpt_editor.EqualsDynamic(obj.last_excerpt_editor)) &&
|
||||
tag_name.TrueEqualsString((string) obj.tag_name);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class TopTag : IGenericEquality<TopTag>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public string tag_name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? question_score { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? question_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? answer_score { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? answer_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
public bool Equals(TopTag obj)
|
||||
{
|
||||
return
|
||||
answer_count.TrueEquals(obj.answer_count) &&
|
||||
answer_score.TrueEquals(obj.answer_score) &&
|
||||
question_count.TrueEquals(obj.question_count) &&
|
||||
question_score.TrueEquals(obj.question_score) &&
|
||||
tag_name.TrueEqualsString(obj.tag_name) &&
|
||||
user_id.TrueEquals(obj.user_id);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
answer_count.TrueEquals((int?) obj.answer_count) &&
|
||||
answer_score.TrueEquals((int?) obj.answer_score) &&
|
||||
question_count.TrueEquals((int?) obj.question_count) &&
|
||||
question_score.TrueEquals((int?) obj.question_score) &&
|
||||
tag_name.TrueEqualsString((string) obj.tag_name) &&
|
||||
user_id.TrueEquals((int?) obj.user_id);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,190 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class User : IGenericEquality<User>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public UserType? user_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public string display_name { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public string profile_image { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? reputation { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? reputation_change_day { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public int? reputation_change_week { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public int? reputation_change_month { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public int? reputation_change_quarter { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public int? reputation_change_year { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(12), oldmsgpack::MessagePack.Key(12 - 1), newmsgpack::MessagePack.Key(12 - 1)]
|
||||
public int? age { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(13), oldmsgpack::MessagePack.Key(13 - 1), newmsgpack::MessagePack.Key(13 - 1)]
|
||||
public DateTime? last_access_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(14), oldmsgpack::MessagePack.Key(14 - 1), newmsgpack::MessagePack.Key(14 - 1)]
|
||||
public DateTime? last_modified_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(15), oldmsgpack::MessagePack.Key(15 - 1), newmsgpack::MessagePack.Key(15 - 1)]
|
||||
public bool? is_employee { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(16), oldmsgpack::MessagePack.Key(16 - 1), newmsgpack::MessagePack.Key(16 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(17), oldmsgpack::MessagePack.Key(17 - 1), newmsgpack::MessagePack.Key(17 - 1)]
|
||||
public string website_url { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(18), oldmsgpack::MessagePack.Key(18 - 1), newmsgpack::MessagePack.Key(18 - 1)]
|
||||
public string location { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(19), oldmsgpack::MessagePack.Key(19 - 1), newmsgpack::MessagePack.Key(19 - 1)]
|
||||
public int? account_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(20), oldmsgpack::MessagePack.Key(20 - 1), newmsgpack::MessagePack.Key(20 - 1)]
|
||||
public DateTime? timed_penalty_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(21), oldmsgpack::MessagePack.Key(21 - 1), newmsgpack::MessagePack.Key(21 - 1)]
|
||||
public BadgeCount badge_counts { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(22), oldmsgpack::MessagePack.Key(22 - 1), newmsgpack::MessagePack.Key(22 - 1)]
|
||||
public int? question_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(23), oldmsgpack::MessagePack.Key(23 - 1), newmsgpack::MessagePack.Key(23 - 1)]
|
||||
public int? answer_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(24), oldmsgpack::MessagePack.Key(24 - 1), newmsgpack::MessagePack.Key(24 - 1)]
|
||||
public int? up_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(25), oldmsgpack::MessagePack.Key(25 - 1), newmsgpack::MessagePack.Key(25 - 1)]
|
||||
public int? down_vote_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(26), oldmsgpack::MessagePack.Key(26 - 1), newmsgpack::MessagePack.Key(26 - 1)]
|
||||
public string about_me { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(27), oldmsgpack::MessagePack.Key(27 - 1), newmsgpack::MessagePack.Key(27 - 1)]
|
||||
public int? view_count { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(28), oldmsgpack::MessagePack.Key(28 - 1), newmsgpack::MessagePack.Key(28 - 1)]
|
||||
public int? accept_rate { get; set; }
|
||||
|
||||
public bool Equals(User obj)
|
||||
{
|
||||
return
|
||||
about_me.TrueEqualsString(obj.about_me) &&
|
||||
accept_rate.TrueEquals(obj.accept_rate) &&
|
||||
account_id.TrueEquals(obj.account_id) &&
|
||||
age.TrueEquals(obj.age) &&
|
||||
answer_count.TrueEquals(obj.answer_count) &&
|
||||
badge_counts.TrueEquals(obj.badge_counts) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
display_name.TrueEqualsString(obj.display_name) &&
|
||||
down_vote_count.TrueEquals(obj.down_vote_count) &&
|
||||
is_employee.TrueEquals(obj.is_employee) &&
|
||||
last_access_date.TrueEquals(obj.last_access_date) &&
|
||||
last_modified_date.TrueEquals(obj.last_modified_date) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
location.TrueEqualsString(obj.location) &&
|
||||
profile_image.TrueEqualsString(obj.profile_image) &&
|
||||
question_count.TrueEquals(obj.question_count) &&
|
||||
reputation.TrueEquals(obj.reputation) &&
|
||||
reputation_change_day.TrueEquals(obj.reputation_change_day) &&
|
||||
reputation_change_month.TrueEquals(obj.reputation_change_month) &&
|
||||
reputation_change_quarter.TrueEquals(obj.reputation_change_quarter) &&
|
||||
reputation_change_week.TrueEquals(obj.reputation_change_week) &&
|
||||
reputation_change_year.TrueEquals(obj.reputation_change_year) &&
|
||||
timed_penalty_date.TrueEquals(obj.timed_penalty_date) &&
|
||||
up_vote_count.TrueEquals(obj.up_vote_count) &&
|
||||
user_id.TrueEquals(obj.user_id) &&
|
||||
user_type.TrueEquals(obj.user_type) &&
|
||||
view_count.TrueEquals(obj.view_count) &&
|
||||
website_url.TrueEqualsString(obj.website_url);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
about_me.TrueEqualsString((string) obj.about_me) &&
|
||||
accept_rate.TrueEquals((int?) obj.accept_rate) &&
|
||||
account_id.TrueEquals((int?) obj.account_id) &&
|
||||
age.TrueEquals((int?) obj.age) &&
|
||||
answer_count.TrueEquals((int?) obj.answer_count) &&
|
||||
(badge_counts == null && obj.badge_counts == null || badge_counts.EqualsDynamic(obj.badge_counts)) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
display_name.TrueEqualsString((string) obj.display_name) &&
|
||||
down_vote_count.TrueEquals((int?) obj.down_vote_count) &&
|
||||
is_employee.TrueEquals((bool?) obj.is_employee) &&
|
||||
last_access_date.TrueEquals((DateTime?) obj.last_access_date) &&
|
||||
last_modified_date.TrueEquals((DateTime?) obj.last_modified_date) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
location.TrueEqualsString((string) obj.location) &&
|
||||
profile_image.TrueEqualsString((string) obj.profile_image) &&
|
||||
question_count.TrueEquals((int?) obj.question_count) &&
|
||||
reputation.TrueEquals((int?) obj.reputation) &&
|
||||
reputation_change_day.TrueEquals((int?) obj.reputation_change_day) &&
|
||||
reputation_change_month.TrueEquals((int?) obj.reputation_change_month) &&
|
||||
reputation_change_quarter.TrueEquals((int?) obj.reputation_change_quarter) &&
|
||||
reputation_change_week.TrueEquals((int?) obj.reputation_change_week) &&
|
||||
reputation_change_year.TrueEquals((int?) obj.reputation_change_year) &&
|
||||
timed_penalty_date.TrueEquals((DateTime?) obj.timed_penalty_date) &&
|
||||
up_vote_count.TrueEquals((int?) obj.up_vote_count) &&
|
||||
user_id.TrueEquals((int?) obj.user_id) &&
|
||||
user_type.TrueEquals((UserType?) obj.user_type) &&
|
||||
view_count.TrueEquals((int?) obj.view_count) &&
|
||||
website_url.TrueEqualsString((string) obj.website_url);
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class BadgeCount : IGenericEquality<BadgeCount>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? gold { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public int? silver { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public int? bronze { get; set; }
|
||||
|
||||
public bool Equals(BadgeCount obj)
|
||||
{
|
||||
return
|
||||
bronze.TrueEquals(obj.bronze) &&
|
||||
silver.TrueEquals(obj.silver) &&
|
||||
gold.TrueEquals(obj.gold);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
bronze.TrueEquals((int?) obj.bronze) &&
|
||||
silver.TrueEquals((int?) obj.silver) &&
|
||||
gold.TrueEquals((int?) obj.gold);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using System;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
public enum UserTimelineType : byte
|
||||
{
|
||||
commented = 1,
|
||||
asked = 2,
|
||||
answered = 3,
|
||||
badge = 4,
|
||||
revision = 5,
|
||||
accepted = 6,
|
||||
reviewed = 7,
|
||||
suggested = 8
|
||||
}
|
||||
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class UserTimeline : IGenericEquality<UserTimeline>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public DateTime? creation_date { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public PostType? post_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public UserTimelineType? timeline_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public int? post_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? comment_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? suggested_edit_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(8), oldmsgpack::MessagePack.Key(8 - 1), newmsgpack::MessagePack.Key(8 - 1)]
|
||||
public int? badge_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(9), oldmsgpack::MessagePack.Key(9 - 1), newmsgpack::MessagePack.Key(9 - 1)]
|
||||
public string title { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(10), oldmsgpack::MessagePack.Key(10 - 1), newmsgpack::MessagePack.Key(10 - 1)]
|
||||
public string detail { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(11), oldmsgpack::MessagePack.Key(11 - 1), newmsgpack::MessagePack.Key(11 - 1)]
|
||||
public string link { get; set; }
|
||||
|
||||
public bool Equals(UserTimeline obj)
|
||||
{
|
||||
return
|
||||
badge_id.TrueEquals(obj.badge_id) &&
|
||||
comment_id.TrueEquals(obj.comment_id) &&
|
||||
creation_date.TrueEquals(obj.creation_date) &&
|
||||
detail.TrueEqualsString(obj.detail) &&
|
||||
link.TrueEqualsString(obj.link) &&
|
||||
post_id.TrueEquals(obj.post_id) &&
|
||||
post_type.TrueEquals(obj.post_type) &&
|
||||
suggested_edit_id.TrueEquals(obj.suggested_edit_id) &&
|
||||
timeline_type.TrueEquals(obj.timeline_type) &&
|
||||
title.TrueEqualsString(obj.title) &&
|
||||
user_id.TrueEquals(obj.user_id);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
badge_id.TrueEquals((int?) obj.badge_id) &&
|
||||
comment_id.TrueEquals((int?) obj.comment_id) &&
|
||||
creation_date.TrueEquals((DateTime?) obj.creation_date) &&
|
||||
detail.TrueEqualsString((string) obj.detail) &&
|
||||
link.TrueEqualsString((string) obj.link) &&
|
||||
post_id.TrueEquals((int?) obj.post_id) &&
|
||||
post_type.TrueEquals((PostType?) obj.post_type) &&
|
||||
suggested_edit_id.TrueEquals((int?) obj.suggested_edit_id) &&
|
||||
timeline_type.TrueEquals((UserTimelineType?) obj.timeline_type) &&
|
||||
title.TrueEqualsString((string) obj.title) &&
|
||||
user_id.TrueEquals((int?) obj.user_id);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
using ProtoBuf;
|
||||
|
||||
namespace Benchmark.Models
|
||||
{
|
||||
[ProtoContract, System.Serializable, System.Runtime.Serialization.DataContract, oldmsgpack::MessagePack.MessagePackObject, newmsgpack::MessagePack.MessagePackObject]
|
||||
public class WritePermission : IGenericEquality<WritePermission>
|
||||
{
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(1), oldmsgpack::MessagePack.Key(1 - 1), newmsgpack::MessagePack.Key(1 - 1)]
|
||||
public int? user_id { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(2), oldmsgpack::MessagePack.Key(2 - 1), newmsgpack::MessagePack.Key(2 - 1)]
|
||||
public string object_type { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(3), oldmsgpack::MessagePack.Key(3 - 1), newmsgpack::MessagePack.Key(3 - 1)]
|
||||
public bool? can_add { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(4), oldmsgpack::MessagePack.Key(4 - 1), newmsgpack::MessagePack.Key(4 - 1)]
|
||||
public bool? can_edit { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(5), oldmsgpack::MessagePack.Key(5 - 1), newmsgpack::MessagePack.Key(5 - 1)]
|
||||
public bool? can_delete { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(6), oldmsgpack::MessagePack.Key(6 - 1), newmsgpack::MessagePack.Key(6 - 1)]
|
||||
public int? max_daily_actions { get; set; }
|
||||
|
||||
[System.Runtime.Serialization.DataMember(), ProtoMember(7), oldmsgpack::MessagePack.Key(7 - 1), newmsgpack::MessagePack.Key(7 - 1)]
|
||||
public int? min_seconds_between_actions { get; set; }
|
||||
|
||||
public bool Equals(WritePermission obj)
|
||||
{
|
||||
return
|
||||
can_add.TrueEquals(obj.can_add) &&
|
||||
can_delete.TrueEquals(obj.can_delete) &&
|
||||
can_edit.TrueEquals(obj.can_edit) &&
|
||||
max_daily_actions.TrueEquals(obj.max_daily_actions) &&
|
||||
min_seconds_between_actions.TrueEquals(obj.min_seconds_between_actions) &&
|
||||
object_type.TrueEqualsString(obj.object_type) &&
|
||||
user_id.TrueEquals(obj.user_id);
|
||||
}
|
||||
|
||||
public bool EqualsDynamic(dynamic obj)
|
||||
{
|
||||
return
|
||||
can_add.TrueEquals((bool?) obj.can_add) &&
|
||||
can_delete.TrueEquals((bool?) obj.can_delete) &&
|
||||
can_edit.TrueEquals((bool?) obj.can_edit) &&
|
||||
max_daily_actions.TrueEquals((int?) obj.max_daily_actions) &&
|
||||
min_seconds_between_actions.TrueEquals((int?) obj.min_seconds_between_actions) &&
|
||||
object_type.TrueEqualsString((string) obj.object_type) &&
|
||||
user_id.TrueEquals((int?) obj.user_id);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
using Benchmark;
|
||||
using Benchmark.Models;
|
||||
using BenchmarkDotNet.Running;
|
||||
|
||||
namespace ConsoleApp1
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
|
||||
//BenchmarkRunner.Run<ShortRun_AllSerializerBenchmark_BytesInOut>();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,955 @@
|
|||
namespace Benchmark
|
||||
{
|
||||
using Benchmark.Fixture;
|
||||
using Benchmark.Models;
|
||||
using Benchmark.Serializers;
|
||||
using BenchmarkDotNet.Attributes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
[Config(typeof(BenchmarkConfig))]
|
||||
public class AllSerializerBenchmark_BytesInOut
|
||||
{
|
||||
[ParamsSource(nameof(Serializers))]
|
||||
public SerializerBase Serializer;
|
||||
|
||||
// Currently BenchmarkdDotNet does not detect inherited ParamsSource so use copy and paste:)
|
||||
|
||||
public IEnumerable<SerializerBase> Serializers => new SerializerBase[]
|
||||
{
|
||||
new MessagePack_v1(),
|
||||
new MessagePack_v2(),
|
||||
new MessagePackLz4_v1(),
|
||||
new MessagePackLz4_v2(),
|
||||
new ProtobufNet(),
|
||||
new JsonNet(),
|
||||
new BinaryFormatter_(),
|
||||
new DataContract_(),
|
||||
new Hyperion_(),
|
||||
new Jil_(),
|
||||
new SpanJson_(),
|
||||
new Utf8Json_(),
|
||||
new MsgPackCli(),
|
||||
new FsPickler_(),
|
||||
new Ceras_(),
|
||||
};
|
||||
|
||||
protected static readonly ExpressionTreeFixture ExpressionTreeFixture = new ExpressionTreeFixture();
|
||||
|
||||
// primitives
|
||||
|
||||
protected static readonly sbyte SByteInput = ExpressionTreeFixture.Create<sbyte>();
|
||||
protected static readonly short ShortInput = ExpressionTreeFixture.Create<short>();
|
||||
protected static readonly int IntInput = ExpressionTreeFixture.Create<int>();
|
||||
protected static readonly long LongInput = ExpressionTreeFixture.Create<long>();
|
||||
protected static readonly byte ByteInput = ExpressionTreeFixture.Create<byte>();
|
||||
protected static readonly ushort UShortInput = ExpressionTreeFixture.Create<ushort>();
|
||||
protected static readonly uint UIntInput = ExpressionTreeFixture.Create<uint>();
|
||||
protected static readonly ulong ULongInput = ExpressionTreeFixture.Create<ulong>();
|
||||
protected static readonly bool BoolInput = ExpressionTreeFixture.Create<bool>();
|
||||
protected static readonly string StringInput = ExpressionTreeFixture.Create<string>();
|
||||
protected static readonly char CharInput = ExpressionTreeFixture.Create<char>();
|
||||
protected static readonly DateTime DateTimeInput = ExpressionTreeFixture.Create<DateTime>();
|
||||
protected static readonly Guid GuidInput = ExpressionTreeFixture.Create<Guid>();
|
||||
protected static readonly byte[] BytesInput = ExpressionTreeFixture.Create<byte[]>();
|
||||
|
||||
// models
|
||||
|
||||
protected static readonly Benchmark.Models.AccessToken AccessTokenInput = ExpressionTreeFixture.Create<Benchmark.Models.AccessToken>();
|
||||
|
||||
protected static readonly Benchmark.Models.AccountMerge AccountMergeInput = ExpressionTreeFixture.Create<Benchmark.Models.AccountMerge>();
|
||||
|
||||
protected static readonly Benchmark.Models.Answer AnswerInput = ExpressionTreeFixture.Create<Benchmark.Models.Answer>();
|
||||
|
||||
protected static readonly Benchmark.Models.Badge BadgeInput = ExpressionTreeFixture.Create<Benchmark.Models.Badge>();
|
||||
|
||||
protected static readonly Benchmark.Models.Comment CommentInput = ExpressionTreeFixture.Create<Benchmark.Models.Comment>();
|
||||
|
||||
protected static readonly Benchmark.Models.Error ErrorInput = ExpressionTreeFixture.Create<Benchmark.Models.Error>();
|
||||
|
||||
protected static readonly Benchmark.Models.Event EventInput = ExpressionTreeFixture.Create<Benchmark.Models.Event>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileFeed MobileFeedInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileFeed>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileQuestion MobileQuestionInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileQuestion>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileRepChange MobileRepChangeInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileRepChange>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileInboxItem MobileInboxItemInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileInboxItem>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileBadgeAward MobileBadgeAwardInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileBadgeAward>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobilePrivilege MobilePrivilegeInput = ExpressionTreeFixture.Create<Benchmark.Models.MobilePrivilege>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileCommunityBulletin MobileCommunityBulletinInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileCommunityBulletin>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileAssociationBonus MobileAssociationBonusInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileAssociationBonus>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileCareersJobAd MobileCareersJobAdInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileCareersJobAd>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileBannerAd MobileBannerAdInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileBannerAd>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileUpdateNotice MobileUpdateNoticeInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileUpdateNotice>();
|
||||
|
||||
protected static readonly Benchmark.Models.FlagOption FlagOptionInput = ExpressionTreeFixture.Create<Benchmark.Models.FlagOption>();
|
||||
|
||||
protected static readonly Benchmark.Models.InboxItem InboxItemInput = ExpressionTreeFixture.Create<Benchmark.Models.InboxItem>();
|
||||
|
||||
protected static readonly Benchmark.Models.Info InfoInput = ExpressionTreeFixture.Create<Benchmark.Models.Info>();
|
||||
|
||||
protected static readonly Benchmark.Models.NetworkUser NetworkUserInput = ExpressionTreeFixture.Create<Benchmark.Models.NetworkUser>();
|
||||
|
||||
protected static readonly Benchmark.Models.Notification NotificationInput = ExpressionTreeFixture.Create<Benchmark.Models.Notification>();
|
||||
|
||||
protected static readonly Benchmark.Models.Post PostInput = ExpressionTreeFixture.Create<Benchmark.Models.Post>();
|
||||
|
||||
protected static readonly Benchmark.Models.Privilege PrivilegeInput = ExpressionTreeFixture.Create<Benchmark.Models.Privilege>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question QuestionInput = ExpressionTreeFixture.Create<Benchmark.Models.Question>();
|
||||
|
||||
protected static readonly Benchmark.Models.QuestionTimeline QuestionTimelineInput = ExpressionTreeFixture.Create<Benchmark.Models.QuestionTimeline>();
|
||||
|
||||
protected static readonly Benchmark.Models.Reputation ReputationInput = ExpressionTreeFixture.Create<Benchmark.Models.Reputation>();
|
||||
|
||||
protected static readonly Benchmark.Models.ReputationHistory ReputationHistoryInput = ExpressionTreeFixture.Create<Benchmark.Models.ReputationHistory>();
|
||||
|
||||
protected static readonly Benchmark.Models.Revision RevisionInput = ExpressionTreeFixture.Create<Benchmark.Models.Revision>();
|
||||
|
||||
protected static readonly Benchmark.Models.SearchExcerpt SearchExcerptInput = ExpressionTreeFixture.Create<Benchmark.Models.SearchExcerpt>();
|
||||
|
||||
protected static readonly Benchmark.Models.ShallowUser ShallowUserInput = ExpressionTreeFixture.Create<Benchmark.Models.ShallowUser>();
|
||||
|
||||
protected static readonly Benchmark.Models.SuggestedEdit SuggestedEditInput = ExpressionTreeFixture.Create<Benchmark.Models.SuggestedEdit>();
|
||||
|
||||
protected static readonly Benchmark.Models.Tag TagInput = ExpressionTreeFixture.Create<Benchmark.Models.Tag>();
|
||||
|
||||
protected static readonly Benchmark.Models.TagScore TagScoreInput = ExpressionTreeFixture.Create<Benchmark.Models.TagScore>();
|
||||
|
||||
protected static readonly Benchmark.Models.TagSynonym TagSynonymInput = ExpressionTreeFixture.Create<Benchmark.Models.TagSynonym>();
|
||||
|
||||
protected static readonly Benchmark.Models.TagWiki TagWikiInput = ExpressionTreeFixture.Create<Benchmark.Models.TagWiki>();
|
||||
|
||||
protected static readonly Benchmark.Models.TopTag TopTagInput = ExpressionTreeFixture.Create<Benchmark.Models.TopTag>();
|
||||
|
||||
protected static readonly Benchmark.Models.User UserInput = ExpressionTreeFixture.Create<Benchmark.Models.User>();
|
||||
|
||||
protected static readonly Benchmark.Models.UserTimeline UserTimelineInput = ExpressionTreeFixture.Create<Benchmark.Models.UserTimeline>();
|
||||
|
||||
protected static readonly Benchmark.Models.WritePermission WritePermissionInput = ExpressionTreeFixture.Create<Benchmark.Models.WritePermission>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileBannerAd.MobileBannerAdImage MobileBannerAdImageInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileBannerAd.MobileBannerAdImage>();
|
||||
|
||||
protected static readonly Benchmark.Models.Info.Site SiteInput = ExpressionTreeFixture.Create<Benchmark.Models.Info.Site>();
|
||||
|
||||
protected static readonly Benchmark.Models.Info.RelatedSite RelatedSiteInput = ExpressionTreeFixture.Create<Benchmark.Models.Info.RelatedSite>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question.ClosedDetails ClosedDetailsInput = ExpressionTreeFixture.Create<Benchmark.Models.Question.ClosedDetails>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question.Notice NoticeInput = ExpressionTreeFixture.Create<Benchmark.Models.Question.Notice>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question.MigrationInfo MigrationInfoInput = ExpressionTreeFixture.Create<Benchmark.Models.Question.MigrationInfo>();
|
||||
|
||||
protected static readonly Benchmark.Models.User.BadgeCount BadgeCountInput = ExpressionTreeFixture.Create<Benchmark.Models.User.BadgeCount>();
|
||||
|
||||
protected static readonly Benchmark.Models.Info.Site.Styling StylingInput = ExpressionTreeFixture.Create<Benchmark.Models.Info.Site.Styling>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question.ClosedDetails.OriginalQuestion OriginalQuestionInput = ExpressionTreeFixture.Create<Benchmark.Models.Question.ClosedDetails.OriginalQuestion>();
|
||||
|
||||
object SByteOutput;
|
||||
object ShortOutput;
|
||||
object IntOutput;
|
||||
object LongOutput;
|
||||
object ByteOutput;
|
||||
object UShortOutput;
|
||||
object UIntOutput;
|
||||
object ULongOutput;
|
||||
object BoolOutput;
|
||||
object StringOutput;
|
||||
object CharOutput;
|
||||
object DateTimeOutput;
|
||||
object GuidOutput;
|
||||
object BytesOutput;
|
||||
|
||||
object AccessTokenOutput;
|
||||
object AccountMergeOutput;
|
||||
object AnswerOutput;
|
||||
object BadgeOutput;
|
||||
object CommentOutput;
|
||||
object ErrorOutput;
|
||||
object EventOutput;
|
||||
object MobileFeedOutput;
|
||||
object MobileQuestionOutput;
|
||||
object MobileRepChangeOutput;
|
||||
object MobileInboxItemOutput;
|
||||
object MobileBadgeAwardOutput;
|
||||
object MobilePrivilegeOutput;
|
||||
object MobileCommunityBulletinOutput;
|
||||
object MobileAssociationBonusOutput;
|
||||
object MobileCareersJobAdOutput;
|
||||
object MobileBannerAdOutput;
|
||||
object MobileUpdateNoticeOutput;
|
||||
object FlagOptionOutput;
|
||||
object InboxItemOutput;
|
||||
object InfoOutput;
|
||||
object NetworkUserOutput;
|
||||
object NotificationOutput;
|
||||
object PostOutput;
|
||||
object PrivilegeOutput;
|
||||
object QuestionOutput;
|
||||
object QuestionTimelineOutput;
|
||||
object ReputationOutput;
|
||||
object ReputationHistoryOutput;
|
||||
object RevisionOutput;
|
||||
object SearchExcerptOutput;
|
||||
object ShallowUserOutput;
|
||||
object SuggestedEditOutput;
|
||||
object TagOutput;
|
||||
object TagScoreOutput;
|
||||
object TagSynonymOutput;
|
||||
object TagWikiOutput;
|
||||
object TopTagOutput;
|
||||
object UserOutput;
|
||||
object UserTimelineOutput;
|
||||
object WritePermissionOutput;
|
||||
object MobileBannerAdImageOutput;
|
||||
object SiteOutput;
|
||||
object RelatedSiteOutput;
|
||||
object ClosedDetailsOutput;
|
||||
object NoticeOutput;
|
||||
object MigrationInfoOutput;
|
||||
object BadgeCountOutput;
|
||||
object StylingOutput;
|
||||
object OriginalQuestionOutput;
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
{
|
||||
// primitives
|
||||
SByteOutput = Serializer.Serialize(SByteInput);
|
||||
ShortOutput = Serializer.Serialize(ShortInput);
|
||||
IntOutput = Serializer.Serialize(IntInput);
|
||||
LongOutput = Serializer.Serialize(LongInput);
|
||||
ByteOutput = Serializer.Serialize(ByteInput);
|
||||
UShortOutput = Serializer.Serialize(UShortInput);
|
||||
UIntOutput = Serializer.Serialize(UIntInput);
|
||||
ULongOutput = Serializer.Serialize(ULongInput);
|
||||
BoolOutput = Serializer.Serialize(BoolInput);
|
||||
StringOutput = Serializer.Serialize(StringInput);
|
||||
CharOutput = Serializer.Serialize(CharInput);
|
||||
DateTimeOutput = Serializer.Serialize(DateTimeInput);
|
||||
GuidOutput = Serializer.Serialize(GuidInput);
|
||||
BytesOutput = Serializer.Serialize(BytesInput);
|
||||
|
||||
// models
|
||||
AccessTokenOutput = Serializer.Serialize(AccessTokenInput);
|
||||
AccountMergeOutput = Serializer.Serialize(AccountMergeInput);
|
||||
AnswerOutput = Serializer.Serialize(AnswerInput);
|
||||
BadgeOutput = Serializer.Serialize(BadgeInput);
|
||||
CommentOutput = Serializer.Serialize(CommentInput);
|
||||
ErrorOutput = Serializer.Serialize(ErrorInput);
|
||||
EventOutput = Serializer.Serialize(EventInput);
|
||||
MobileFeedOutput = Serializer.Serialize(MobileFeedInput);
|
||||
MobileQuestionOutput = Serializer.Serialize(MobileQuestionInput);
|
||||
MobileRepChangeOutput = Serializer.Serialize(MobileRepChangeInput);
|
||||
MobileInboxItemOutput = Serializer.Serialize(MobileInboxItemInput);
|
||||
MobileBadgeAwardOutput = Serializer.Serialize(MobileBadgeAwardInput);
|
||||
MobilePrivilegeOutput = Serializer.Serialize(MobilePrivilegeInput);
|
||||
MobileCommunityBulletinOutput = Serializer.Serialize(MobileCommunityBulletinInput);
|
||||
MobileAssociationBonusOutput = Serializer.Serialize(MobileAssociationBonusInput);
|
||||
MobileCareersJobAdOutput = Serializer.Serialize(MobileCareersJobAdInput);
|
||||
MobileBannerAdOutput = Serializer.Serialize(MobileBannerAdInput);
|
||||
MobileUpdateNoticeOutput = Serializer.Serialize(MobileUpdateNoticeInput);
|
||||
FlagOptionOutput = Serializer.Serialize(FlagOptionInput);
|
||||
InboxItemOutput = Serializer.Serialize(InboxItemInput);
|
||||
InfoOutput = Serializer.Serialize(InfoInput);
|
||||
NetworkUserOutput = Serializer.Serialize(NetworkUserInput);
|
||||
NotificationOutput = Serializer.Serialize(NotificationInput);
|
||||
PostOutput = Serializer.Serialize(PostInput);
|
||||
PrivilegeOutput = Serializer.Serialize(PrivilegeInput);
|
||||
QuestionOutput = Serializer.Serialize(QuestionInput);
|
||||
QuestionTimelineOutput = Serializer.Serialize(QuestionTimelineInput);
|
||||
ReputationOutput = Serializer.Serialize(ReputationInput);
|
||||
ReputationHistoryOutput = Serializer.Serialize(ReputationHistoryInput);
|
||||
RevisionOutput = Serializer.Serialize(RevisionInput);
|
||||
SearchExcerptOutput = Serializer.Serialize(SearchExcerptInput);
|
||||
ShallowUserOutput = Serializer.Serialize(ShallowUserInput);
|
||||
SuggestedEditOutput = Serializer.Serialize(SuggestedEditInput);
|
||||
TagOutput = Serializer.Serialize(TagInput);
|
||||
TagScoreOutput = Serializer.Serialize(TagScoreInput);
|
||||
TagSynonymOutput = Serializer.Serialize(TagSynonymInput);
|
||||
TagWikiOutput = Serializer.Serialize(TagWikiInput);
|
||||
TopTagOutput = Serializer.Serialize(TopTagInput);
|
||||
UserOutput = Serializer.Serialize(UserInput);
|
||||
UserTimelineOutput = Serializer.Serialize(UserTimelineInput);
|
||||
WritePermissionOutput = Serializer.Serialize(WritePermissionInput);
|
||||
MobileBannerAdImageOutput = Serializer.Serialize(MobileBannerAdImageInput);
|
||||
SiteOutput = Serializer.Serialize(SiteInput);
|
||||
RelatedSiteOutput = Serializer.Serialize(RelatedSiteInput);
|
||||
ClosedDetailsOutput = Serializer.Serialize(ClosedDetailsInput);
|
||||
NoticeOutput = Serializer.Serialize(NoticeInput);
|
||||
MigrationInfoOutput = Serializer.Serialize(MigrationInfoInput);
|
||||
BadgeCountOutput = Serializer.Serialize(BadgeCountInput);
|
||||
StylingOutput = Serializer.Serialize(StylingInput);
|
||||
OriginalQuestionOutput = Serializer.Serialize(OriginalQuestionInput);
|
||||
}
|
||||
|
||||
// Serialize
|
||||
|
||||
[Benchmark] public object _PrimitiveSByteSerialize() => Serializer.Serialize(SByteInput);
|
||||
[Benchmark] public object _PrimitiveShortSerialize() => Serializer.Serialize(ShortInput);
|
||||
[Benchmark] public object _PrimitiveIntSerialize() => Serializer.Serialize(IntInput);
|
||||
[Benchmark] public object _PrimitiveLongSerialize() => Serializer.Serialize(LongInput);
|
||||
[Benchmark] public object _PrimitiveByteSerialize() => Serializer.Serialize(ByteInput);
|
||||
[Benchmark] public object _PrimitiveUShortSerialize() => Serializer.Serialize(UShortInput);
|
||||
[Benchmark] public object _PrimitiveUIntSerialize() => Serializer.Serialize(UIntInput);
|
||||
[Benchmark] public object _PrimitiveULongSerialize() => Serializer.Serialize(ULongInput);
|
||||
[Benchmark] public object _PrimitiveBoolSerialize() => Serializer.Serialize(BoolInput);
|
||||
[Benchmark] public object _PrimitiveStringSerialize() => Serializer.Serialize(StringInput);
|
||||
[Benchmark] public object _PrimitiveCharSerialize() => Serializer.Serialize(CharInput);
|
||||
[Benchmark] public object _PrimitiveDateTimeSerialize() => Serializer.Serialize(DateTimeInput);
|
||||
[Benchmark] public object _PrimitiveGuidSerialize() => Serializer.Serialize(GuidInput);
|
||||
[Benchmark] public object _PrimitiveBytesSerialize() => Serializer.Serialize(BytesInput);
|
||||
|
||||
[Benchmark] public object AccessTokenSerialize() => Serializer.Serialize(AccessTokenInput);
|
||||
[Benchmark] public object AccountMergeSerialize() => Serializer.Serialize(AccountMergeInput);
|
||||
[Benchmark] public object AnswerSerialize() => Serializer.Serialize(AnswerInput);
|
||||
[Benchmark] public object BadgeSerialize() => Serializer.Serialize(BadgeInput);
|
||||
[Benchmark] public object CommentSerialize() => Serializer.Serialize(CommentInput);
|
||||
[Benchmark] public object ErrorSerialize() => Serializer.Serialize(ErrorInput);
|
||||
[Benchmark] public object EventSerialize() => Serializer.Serialize(EventInput);
|
||||
[Benchmark] public object MobileFeedSerialize() => Serializer.Serialize(MobileFeedInput);
|
||||
[Benchmark] public object MobileQuestionSerialize() => Serializer.Serialize(MobileQuestionInput);
|
||||
[Benchmark] public object MobileRepChangeSerialize() => Serializer.Serialize(MobileRepChangeInput);
|
||||
[Benchmark] public object MobileInboxItemSerialize() => Serializer.Serialize(MobileInboxItemInput);
|
||||
[Benchmark] public object MobileBadgeAwardSerialize() => Serializer.Serialize(MobileBadgeAwardInput);
|
||||
[Benchmark] public object MobilePrivilegeSerialize() => Serializer.Serialize(MobilePrivilegeInput);
|
||||
[Benchmark] public object MobileCommunityBulletinSerialize() => Serializer.Serialize(MobileCommunityBulletinInput);
|
||||
[Benchmark] public object MobileAssociationBonusSerialize() => Serializer.Serialize(MobileAssociationBonusInput);
|
||||
[Benchmark] public object MobileCareersJobAdSerialize() => Serializer.Serialize(MobileCareersJobAdInput);
|
||||
[Benchmark] public object MobileBannerAdSerialize() => Serializer.Serialize(MobileBannerAdInput);
|
||||
[Benchmark] public object MobileUpdateNoticeSerialize() => Serializer.Serialize(MobileUpdateNoticeInput);
|
||||
[Benchmark] public object FlagOptionSerialize() => Serializer.Serialize(FlagOptionInput);
|
||||
[Benchmark] public object InboxItemSerialize() => Serializer.Serialize(InboxItemInput);
|
||||
[Benchmark] public object InfoSerialize() => Serializer.Serialize(InfoInput);
|
||||
[Benchmark] public object NetworkUserSerialize() => Serializer.Serialize(NetworkUserInput);
|
||||
[Benchmark] public object NotificationSerialize() => Serializer.Serialize(NotificationInput);
|
||||
[Benchmark] public object PostSerialize() => Serializer.Serialize(PostInput);
|
||||
[Benchmark] public object PrivilegeSerialize() => Serializer.Serialize(PrivilegeInput);
|
||||
[Benchmark] public object QuestionSerialize() => Serializer.Serialize(QuestionInput);
|
||||
[Benchmark] public object QuestionTimelineSerialize() => Serializer.Serialize(QuestionTimelineInput);
|
||||
[Benchmark] public object ReputationSerialize() => Serializer.Serialize(ReputationInput);
|
||||
[Benchmark] public object ReputationHistorySerialize() => Serializer.Serialize(ReputationHistoryInput);
|
||||
[Benchmark] public object RevisionSerialize() => Serializer.Serialize(RevisionInput);
|
||||
[Benchmark] public object SearchExcerptSerialize() => Serializer.Serialize(SearchExcerptInput);
|
||||
[Benchmark] public object ShallowUserSerialize() => Serializer.Serialize(ShallowUserInput);
|
||||
[Benchmark] public object SuggestedEditSerialize() => Serializer.Serialize(SuggestedEditInput);
|
||||
[Benchmark] public object TagSerialize() => Serializer.Serialize(TagInput);
|
||||
[Benchmark] public object TagScoreSerialize() => Serializer.Serialize(TagScoreInput);
|
||||
[Benchmark] public object TagSynonymSerialize() => Serializer.Serialize(TagSynonymInput);
|
||||
[Benchmark] public object TagWikiSerialize() => Serializer.Serialize(TagWikiInput);
|
||||
[Benchmark] public object TopTagSerialize() => Serializer.Serialize(TopTagInput);
|
||||
[Benchmark] public object UserSerialize() => Serializer.Serialize(UserInput);
|
||||
[Benchmark] public object UserTimelineSerialize() => Serializer.Serialize(UserTimelineInput);
|
||||
[Benchmark] public object WritePermissionSerialize() => Serializer.Serialize(WritePermissionInput);
|
||||
[Benchmark] public object MobileBannerAdImageSerialize() => Serializer.Serialize(MobileBannerAdImageInput);
|
||||
[Benchmark] public object SiteSerialize() => Serializer.Serialize(SiteInput);
|
||||
[Benchmark] public object RelatedSiteSerialize() => Serializer.Serialize(RelatedSiteInput);
|
||||
[Benchmark] public object ClosedDetailsSerialize() => Serializer.Serialize(ClosedDetailsInput);
|
||||
[Benchmark] public object NoticeSerialize() => Serializer.Serialize(NoticeInput);
|
||||
[Benchmark] public object MigrationInfoSerialize() => Serializer.Serialize(MigrationInfoInput);
|
||||
[Benchmark] public object BadgeCountSerialize() => Serializer.Serialize(BadgeCountInput);
|
||||
[Benchmark] public object StylingSerialize() => Serializer.Serialize(StylingInput);
|
||||
[Benchmark] public object OriginalQuestionSerialize() => Serializer.Serialize(OriginalQuestionInput);
|
||||
|
||||
// Deserialize
|
||||
|
||||
[Benchmark] public SByte _PrimitiveSByteDeserialize() => Serializer.Deserialize<SByte>(SByteOutput);
|
||||
[Benchmark] public short _PrimitiveShortDeserialize() => Serializer.Deserialize<short>(ShortOutput);
|
||||
[Benchmark] public Int32 _PrimitiveIntDeserialize() => Serializer.Deserialize<Int32>(IntOutput);
|
||||
[Benchmark] public Int64 _PrimitiveLongDeserialize() => Serializer.Deserialize<Int64>(LongOutput);
|
||||
[Benchmark] public Byte _PrimitiveByteDeserialize() => Serializer.Deserialize<Byte>(ByteOutput);
|
||||
[Benchmark] public ushort _PrimitiveUShortDeserialize() => Serializer.Deserialize<ushort>(UShortOutput);
|
||||
[Benchmark] public uint _PrimitiveUIntDeserialize() => Serializer.Deserialize<uint>(UIntOutput);
|
||||
[Benchmark] public ulong _PrimitiveULongDeserialize() => Serializer.Deserialize<ulong>(ULongOutput);
|
||||
[Benchmark] public bool _PrimitiveBoolDeserialize() => Serializer.Deserialize<bool>(BoolOutput);
|
||||
[Benchmark] public String _PrimitiveStringDeserialize() => Serializer.Deserialize<String>(StringOutput);
|
||||
[Benchmark] public Char _PrimitiveCharDeserialize() => Serializer.Deserialize<Char>(CharOutput);
|
||||
[Benchmark] public DateTime _PrimitiveDateTimeDeserialize() => Serializer.Deserialize<DateTime>(DateTimeOutput);
|
||||
[Benchmark] public Guid _PrimitiveGuidDeserialize() => Serializer.Deserialize<Guid>(GuidOutput);
|
||||
[Benchmark] public byte[] _PrimitiveBytesDeserialize() => Serializer.Deserialize<byte[]>(BytesOutput);
|
||||
[Benchmark] public AccessToken AccessTokenDeserialize() => Serializer.Deserialize<AccessToken>(AccessTokenOutput);
|
||||
[Benchmark] public AccountMerge AccountMergeDeserialize() => Serializer.Deserialize<AccountMerge>(AccountMergeOutput);
|
||||
[Benchmark] public Answer AnswerDeserialize() => Serializer.Deserialize<Answer>(AnswerOutput);
|
||||
[Benchmark] public Badge BadgeDeserialize() => Serializer.Deserialize<Badge>(BadgeOutput);
|
||||
[Benchmark] public Comment CommentDeserialize() => Serializer.Deserialize<Comment>(CommentOutput);
|
||||
[Benchmark] public Error ErrorDeserialize() => Serializer.Deserialize<Error>(ErrorOutput);
|
||||
[Benchmark] public Event EventDeserialize() => Serializer.Deserialize<Event>(EventOutput);
|
||||
[Benchmark] public MobileFeed MobileFeedDeserialize() => Serializer.Deserialize<MobileFeed>(MobileFeedOutput);
|
||||
[Benchmark] public MobileQuestion MobileQuestionDeserialize() => Serializer.Deserialize<MobileQuestion>(MobileQuestionOutput);
|
||||
[Benchmark] public MobileRepChange MobileRepChangeDeserialize() => Serializer.Deserialize<MobileRepChange>(MobileRepChangeOutput);
|
||||
[Benchmark] public MobileInboxItem MobileInboxItemDeserialize() => Serializer.Deserialize<MobileInboxItem>(MobileInboxItemOutput);
|
||||
[Benchmark] public MobileBadgeAward MobileBadgeAwardDeserialize() => Serializer.Deserialize<MobileBadgeAward>(MobileBadgeAwardOutput);
|
||||
[Benchmark] public MobilePrivilege MobilePrivilegeDeserialize() => Serializer.Deserialize<MobilePrivilege>(MobilePrivilegeOutput);
|
||||
[Benchmark] public MobileCommunityBulletin MobileCommunityBulletinDeserialize() => Serializer.Deserialize<MobileCommunityBulletin>(MobileCommunityBulletinOutput);
|
||||
[Benchmark] public MobileAssociationBonus MobileAssociationBonusDeserialize() => Serializer.Deserialize<MobileAssociationBonus>(MobileAssociationBonusOutput);
|
||||
[Benchmark] public MobileCareersJobAd MobileCareersJobAdDeserialize() => Serializer.Deserialize<MobileCareersJobAd>(MobileCareersJobAdOutput);
|
||||
[Benchmark] public MobileBannerAd MobileBannerAdDeserialize() => Serializer.Deserialize<MobileBannerAd>(MobileBannerAdOutput);
|
||||
[Benchmark] public MobileUpdateNotice MobileUpdateNoticeDeserialize() => Serializer.Deserialize<MobileUpdateNotice>(MobileUpdateNoticeOutput);
|
||||
[Benchmark] public FlagOption FlagOptionDeserialize() => Serializer.Deserialize<FlagOption>(FlagOptionOutput);
|
||||
[Benchmark] public InboxItem InboxItemDeserialize() => Serializer.Deserialize<InboxItem>(InboxItemOutput);
|
||||
[Benchmark] public Info InfoDeserialize() => Serializer.Deserialize<Info>(InfoOutput);
|
||||
[Benchmark] public NetworkUser NetworkUserDeserialize() => Serializer.Deserialize<NetworkUser>(NetworkUserOutput);
|
||||
[Benchmark] public Notification NotificationDeserialize() => Serializer.Deserialize<Notification>(NotificationOutput);
|
||||
[Benchmark] public Post PostDeserialize() => Serializer.Deserialize<Post>(PostOutput);
|
||||
[Benchmark] public Privilege PrivilegeDeserialize() => Serializer.Deserialize<Privilege>(PrivilegeOutput);
|
||||
[Benchmark] public Question QuestionDeserialize() => Serializer.Deserialize<Question>(QuestionOutput);
|
||||
[Benchmark] public QuestionTimeline QuestionTimelineDeserialize() => Serializer.Deserialize<QuestionTimeline>(QuestionTimelineOutput);
|
||||
[Benchmark] public Reputation ReputationDeserialize() => Serializer.Deserialize<Reputation>(ReputationOutput);
|
||||
[Benchmark] public ReputationHistory ReputationHistoryDeserialize() => Serializer.Deserialize<ReputationHistory>(ReputationHistoryOutput);
|
||||
[Benchmark] public Revision RevisionDeserialize() => Serializer.Deserialize<Revision>(RevisionOutput);
|
||||
[Benchmark] public SearchExcerpt SearchExcerptDeserialize() => Serializer.Deserialize<SearchExcerpt>(SearchExcerptOutput);
|
||||
[Benchmark] public ShallowUser ShallowUserDeserialize() => Serializer.Deserialize<ShallowUser>(ShallowUserOutput);
|
||||
[Benchmark] public SuggestedEdit SuggestedEditDeserialize() => Serializer.Deserialize<SuggestedEdit>(SuggestedEditOutput);
|
||||
[Benchmark] public Tag TagDeserialize() => Serializer.Deserialize<Tag>(TagOutput);
|
||||
[Benchmark] public TagScore TagScoreDeserialize() => Serializer.Deserialize<TagScore>(TagScoreOutput);
|
||||
[Benchmark] public TagSynonym TagSynonymDeserialize() => Serializer.Deserialize<TagSynonym>(TagSynonymOutput);
|
||||
[Benchmark] public TagWiki TagWikiDeserialize() => Serializer.Deserialize<TagWiki>(TagWikiOutput);
|
||||
[Benchmark] public TopTag TopTagDeserialize() => Serializer.Deserialize<TopTag>(TopTagOutput);
|
||||
[Benchmark] public User UserDeserialize() => Serializer.Deserialize<User>(UserOutput);
|
||||
[Benchmark] public UserTimeline UserTimelineDeserialize() => Serializer.Deserialize<UserTimeline>(UserTimelineOutput);
|
||||
[Benchmark] public WritePermission WritePermissionDeserialize() => Serializer.Deserialize<WritePermission>(WritePermissionOutput);
|
||||
[Benchmark] public MobileBannerAd.MobileBannerAdImage MobileBannerAdImageDeserialize() => Serializer.Deserialize<MobileBannerAd.MobileBannerAdImage>(MobileBannerAdImageOutput);
|
||||
[Benchmark] public Info.Site SiteDeserialize() => Serializer.Deserialize<Info.Site>(SiteOutput);
|
||||
[Benchmark] public Info.RelatedSite RelatedSiteDeserialize() => Serializer.Deserialize<Info.RelatedSite>(RelatedSiteOutput);
|
||||
[Benchmark] public Question.ClosedDetails ClosedDetailsDeserialize() => Serializer.Deserialize<Question.ClosedDetails>(ClosedDetailsOutput);
|
||||
[Benchmark] public Question.Notice NoticeDeserialize() => Serializer.Deserialize<Question.Notice>(NoticeOutput);
|
||||
[Benchmark] public Question.MigrationInfo MigrationInfoDeserialize() => Serializer.Deserialize<Question.MigrationInfo>(MigrationInfoOutput);
|
||||
[Benchmark] public User.BadgeCount BadgeCountDeserialize() => Serializer.Deserialize<User.BadgeCount>(BadgeCountOutput);
|
||||
[Benchmark] public Info.Site.Styling StylingDeserialize() => Serializer.Deserialize<Info.Site.Styling>(StylingOutput);
|
||||
[Benchmark] public Question.ClosedDetails.OriginalQuestion OriginalQuestionDeserialize() => Serializer.Deserialize<Question.ClosedDetails.OriginalQuestion>(OriginalQuestionOutput);
|
||||
}
|
||||
|
||||
|
||||
[Config(typeof(BenchmarkConfig))]
|
||||
public class MsgPackV1_Vs_MsgPackV2_BytesInOut // : AllSerializerBenchmark
|
||||
{
|
||||
[ParamsSource(nameof(Serializers))]
|
||||
public SerializerBase Serializer;
|
||||
|
||||
// Currently BenchmarkdDotNet does not detect inherited ParamsSource so use copy and paste:)
|
||||
|
||||
public IEnumerable<SerializerBase> Serializers => new SerializerBase[]
|
||||
{
|
||||
new MessagePack_v1(),
|
||||
new MessagePack_v2(),
|
||||
};
|
||||
|
||||
protected static readonly ExpressionTreeFixture ExpressionTreeFixture = new ExpressionTreeFixture();
|
||||
|
||||
// primitives
|
||||
|
||||
protected static readonly sbyte SByteInput = ExpressionTreeFixture.Create<sbyte>();
|
||||
protected static readonly short ShortInput = ExpressionTreeFixture.Create<short>();
|
||||
protected static readonly int IntInput = ExpressionTreeFixture.Create<int>();
|
||||
protected static readonly long LongInput = ExpressionTreeFixture.Create<long>();
|
||||
protected static readonly byte ByteInput = ExpressionTreeFixture.Create<byte>();
|
||||
protected static readonly ushort UShortInput = ExpressionTreeFixture.Create<ushort>();
|
||||
protected static readonly uint UIntInput = ExpressionTreeFixture.Create<uint>();
|
||||
protected static readonly ulong ULongInput = ExpressionTreeFixture.Create<ulong>();
|
||||
protected static readonly bool BoolInput = ExpressionTreeFixture.Create<bool>();
|
||||
protected static readonly string StringInput = ExpressionTreeFixture.Create<string>();
|
||||
protected static readonly char CharInput = ExpressionTreeFixture.Create<char>();
|
||||
protected static readonly DateTime DateTimeInput = ExpressionTreeFixture.Create<DateTime>();
|
||||
protected static readonly Guid GuidInput = ExpressionTreeFixture.Create<Guid>();
|
||||
protected static readonly byte[] BytesInput = ExpressionTreeFixture.Create<byte[]>();
|
||||
|
||||
// models
|
||||
|
||||
protected static readonly Benchmark.Models.AccessToken AccessTokenInput = ExpressionTreeFixture.Create<Benchmark.Models.AccessToken>();
|
||||
|
||||
protected static readonly Benchmark.Models.AccountMerge AccountMergeInput = ExpressionTreeFixture.Create<Benchmark.Models.AccountMerge>();
|
||||
|
||||
protected static readonly Benchmark.Models.Answer AnswerInput = ExpressionTreeFixture.Create<Benchmark.Models.Answer>();
|
||||
|
||||
protected static readonly Benchmark.Models.Badge BadgeInput = ExpressionTreeFixture.Create<Benchmark.Models.Badge>();
|
||||
|
||||
protected static readonly Benchmark.Models.Comment CommentInput = ExpressionTreeFixture.Create<Benchmark.Models.Comment>();
|
||||
|
||||
protected static readonly Benchmark.Models.Error ErrorInput = ExpressionTreeFixture.Create<Benchmark.Models.Error>();
|
||||
|
||||
protected static readonly Benchmark.Models.Event EventInput = ExpressionTreeFixture.Create<Benchmark.Models.Event>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileFeed MobileFeedInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileFeed>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileQuestion MobileQuestionInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileQuestion>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileRepChange MobileRepChangeInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileRepChange>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileInboxItem MobileInboxItemInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileInboxItem>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileBadgeAward MobileBadgeAwardInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileBadgeAward>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobilePrivilege MobilePrivilegeInput = ExpressionTreeFixture.Create<Benchmark.Models.MobilePrivilege>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileCommunityBulletin MobileCommunityBulletinInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileCommunityBulletin>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileAssociationBonus MobileAssociationBonusInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileAssociationBonus>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileCareersJobAd MobileCareersJobAdInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileCareersJobAd>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileBannerAd MobileBannerAdInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileBannerAd>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileUpdateNotice MobileUpdateNoticeInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileUpdateNotice>();
|
||||
|
||||
protected static readonly Benchmark.Models.FlagOption FlagOptionInput = ExpressionTreeFixture.Create<Benchmark.Models.FlagOption>();
|
||||
|
||||
protected static readonly Benchmark.Models.InboxItem InboxItemInput = ExpressionTreeFixture.Create<Benchmark.Models.InboxItem>();
|
||||
|
||||
protected static readonly Benchmark.Models.Info InfoInput = ExpressionTreeFixture.Create<Benchmark.Models.Info>();
|
||||
|
||||
protected static readonly Benchmark.Models.NetworkUser NetworkUserInput = ExpressionTreeFixture.Create<Benchmark.Models.NetworkUser>();
|
||||
|
||||
protected static readonly Benchmark.Models.Notification NotificationInput = ExpressionTreeFixture.Create<Benchmark.Models.Notification>();
|
||||
|
||||
protected static readonly Benchmark.Models.Post PostInput = ExpressionTreeFixture.Create<Benchmark.Models.Post>();
|
||||
|
||||
protected static readonly Benchmark.Models.Privilege PrivilegeInput = ExpressionTreeFixture.Create<Benchmark.Models.Privilege>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question QuestionInput = ExpressionTreeFixture.Create<Benchmark.Models.Question>();
|
||||
|
||||
protected static readonly Benchmark.Models.QuestionTimeline QuestionTimelineInput = ExpressionTreeFixture.Create<Benchmark.Models.QuestionTimeline>();
|
||||
|
||||
protected static readonly Benchmark.Models.Reputation ReputationInput = ExpressionTreeFixture.Create<Benchmark.Models.Reputation>();
|
||||
|
||||
protected static readonly Benchmark.Models.ReputationHistory ReputationHistoryInput = ExpressionTreeFixture.Create<Benchmark.Models.ReputationHistory>();
|
||||
|
||||
protected static readonly Benchmark.Models.Revision RevisionInput = ExpressionTreeFixture.Create<Benchmark.Models.Revision>();
|
||||
|
||||
protected static readonly Benchmark.Models.SearchExcerpt SearchExcerptInput = ExpressionTreeFixture.Create<Benchmark.Models.SearchExcerpt>();
|
||||
|
||||
protected static readonly Benchmark.Models.ShallowUser ShallowUserInput = ExpressionTreeFixture.Create<Benchmark.Models.ShallowUser>();
|
||||
|
||||
protected static readonly Benchmark.Models.SuggestedEdit SuggestedEditInput = ExpressionTreeFixture.Create<Benchmark.Models.SuggestedEdit>();
|
||||
|
||||
protected static readonly Benchmark.Models.Tag TagInput = ExpressionTreeFixture.Create<Benchmark.Models.Tag>();
|
||||
|
||||
protected static readonly Benchmark.Models.TagScore TagScoreInput = ExpressionTreeFixture.Create<Benchmark.Models.TagScore>();
|
||||
|
||||
protected static readonly Benchmark.Models.TagSynonym TagSynonymInput = ExpressionTreeFixture.Create<Benchmark.Models.TagSynonym>();
|
||||
|
||||
protected static readonly Benchmark.Models.TagWiki TagWikiInput = ExpressionTreeFixture.Create<Benchmark.Models.TagWiki>();
|
||||
|
||||
protected static readonly Benchmark.Models.TopTag TopTagInput = ExpressionTreeFixture.Create<Benchmark.Models.TopTag>();
|
||||
|
||||
protected static readonly Benchmark.Models.User UserInput = ExpressionTreeFixture.Create<Benchmark.Models.User>();
|
||||
|
||||
protected static readonly Benchmark.Models.UserTimeline UserTimelineInput = ExpressionTreeFixture.Create<Benchmark.Models.UserTimeline>();
|
||||
|
||||
protected static readonly Benchmark.Models.WritePermission WritePermissionInput = ExpressionTreeFixture.Create<Benchmark.Models.WritePermission>();
|
||||
|
||||
protected static readonly Benchmark.Models.MobileBannerAd.MobileBannerAdImage MobileBannerAdImageInput = ExpressionTreeFixture.Create<Benchmark.Models.MobileBannerAd.MobileBannerAdImage>();
|
||||
|
||||
protected static readonly Benchmark.Models.Info.Site SiteInput = ExpressionTreeFixture.Create<Benchmark.Models.Info.Site>();
|
||||
|
||||
protected static readonly Benchmark.Models.Info.RelatedSite RelatedSiteInput = ExpressionTreeFixture.Create<Benchmark.Models.Info.RelatedSite>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question.ClosedDetails ClosedDetailsInput = ExpressionTreeFixture.Create<Benchmark.Models.Question.ClosedDetails>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question.Notice NoticeInput = ExpressionTreeFixture.Create<Benchmark.Models.Question.Notice>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question.MigrationInfo MigrationInfoInput = ExpressionTreeFixture.Create<Benchmark.Models.Question.MigrationInfo>();
|
||||
|
||||
protected static readonly Benchmark.Models.User.BadgeCount BadgeCountInput = ExpressionTreeFixture.Create<Benchmark.Models.User.BadgeCount>();
|
||||
|
||||
protected static readonly Benchmark.Models.Info.Site.Styling StylingInput = ExpressionTreeFixture.Create<Benchmark.Models.Info.Site.Styling>();
|
||||
|
||||
protected static readonly Benchmark.Models.Question.ClosedDetails.OriginalQuestion OriginalQuestionInput = ExpressionTreeFixture.Create<Benchmark.Models.Question.ClosedDetails.OriginalQuestion>();
|
||||
|
||||
object SByteOutput;
|
||||
object ShortOutput;
|
||||
object IntOutput;
|
||||
object LongOutput;
|
||||
object ByteOutput;
|
||||
object UShortOutput;
|
||||
object UIntOutput;
|
||||
object ULongOutput;
|
||||
object BoolOutput;
|
||||
object StringOutput;
|
||||
object CharOutput;
|
||||
object DateTimeOutput;
|
||||
object GuidOutput;
|
||||
object BytesOutput;
|
||||
|
||||
object AccessTokenOutput;
|
||||
object AccountMergeOutput;
|
||||
object AnswerOutput;
|
||||
object BadgeOutput;
|
||||
object CommentOutput;
|
||||
object ErrorOutput;
|
||||
object EventOutput;
|
||||
object MobileFeedOutput;
|
||||
object MobileQuestionOutput;
|
||||
object MobileRepChangeOutput;
|
||||
object MobileInboxItemOutput;
|
||||
object MobileBadgeAwardOutput;
|
||||
object MobilePrivilegeOutput;
|
||||
object MobileCommunityBulletinOutput;
|
||||
object MobileAssociationBonusOutput;
|
||||
object MobileCareersJobAdOutput;
|
||||
object MobileBannerAdOutput;
|
||||
object MobileUpdateNoticeOutput;
|
||||
object FlagOptionOutput;
|
||||
object InboxItemOutput;
|
||||
object InfoOutput;
|
||||
object NetworkUserOutput;
|
||||
object NotificationOutput;
|
||||
object PostOutput;
|
||||
object PrivilegeOutput;
|
||||
object QuestionOutput;
|
||||
object QuestionTimelineOutput;
|
||||
object ReputationOutput;
|
||||
object ReputationHistoryOutput;
|
||||
object RevisionOutput;
|
||||
object SearchExcerptOutput;
|
||||
object ShallowUserOutput;
|
||||
object SuggestedEditOutput;
|
||||
object TagOutput;
|
||||
object TagScoreOutput;
|
||||
object TagSynonymOutput;
|
||||
object TagWikiOutput;
|
||||
object TopTagOutput;
|
||||
object UserOutput;
|
||||
object UserTimelineOutput;
|
||||
object WritePermissionOutput;
|
||||
object MobileBannerAdImageOutput;
|
||||
object SiteOutput;
|
||||
object RelatedSiteOutput;
|
||||
object ClosedDetailsOutput;
|
||||
object NoticeOutput;
|
||||
object MigrationInfoOutput;
|
||||
object BadgeCountOutput;
|
||||
object StylingOutput;
|
||||
object OriginalQuestionOutput;
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
{
|
||||
// primitives
|
||||
SByteOutput = Serializer.Serialize(SByteInput);
|
||||
ShortOutput = Serializer.Serialize(ShortInput);
|
||||
IntOutput = Serializer.Serialize(IntInput);
|
||||
LongOutput = Serializer.Serialize(LongInput);
|
||||
ByteOutput = Serializer.Serialize(ByteInput);
|
||||
UShortOutput = Serializer.Serialize(UShortInput);
|
||||
UIntOutput = Serializer.Serialize(UIntInput);
|
||||
ULongOutput = Serializer.Serialize(ULongInput);
|
||||
BoolOutput = Serializer.Serialize(BoolInput);
|
||||
StringOutput = Serializer.Serialize(StringInput);
|
||||
CharOutput = Serializer.Serialize(CharInput);
|
||||
DateTimeOutput = Serializer.Serialize(DateTimeInput);
|
||||
GuidOutput = Serializer.Serialize(GuidInput);
|
||||
BytesOutput = Serializer.Serialize(BytesInput);
|
||||
|
||||
// models
|
||||
AccessTokenOutput = Serializer.Serialize(AccessTokenInput);
|
||||
AccountMergeOutput = Serializer.Serialize(AccountMergeInput);
|
||||
AnswerOutput = Serializer.Serialize(AnswerInput);
|
||||
BadgeOutput = Serializer.Serialize(BadgeInput);
|
||||
CommentOutput = Serializer.Serialize(CommentInput);
|
||||
ErrorOutput = Serializer.Serialize(ErrorInput);
|
||||
EventOutput = Serializer.Serialize(EventInput);
|
||||
MobileFeedOutput = Serializer.Serialize(MobileFeedInput);
|
||||
MobileQuestionOutput = Serializer.Serialize(MobileQuestionInput);
|
||||
MobileRepChangeOutput = Serializer.Serialize(MobileRepChangeInput);
|
||||
MobileInboxItemOutput = Serializer.Serialize(MobileInboxItemInput);
|
||||
MobileBadgeAwardOutput = Serializer.Serialize(MobileBadgeAwardInput);
|
||||
MobilePrivilegeOutput = Serializer.Serialize(MobilePrivilegeInput);
|
||||
MobileCommunityBulletinOutput = Serializer.Serialize(MobileCommunityBulletinInput);
|
||||
MobileAssociationBonusOutput = Serializer.Serialize(MobileAssociationBonusInput);
|
||||
MobileCareersJobAdOutput = Serializer.Serialize(MobileCareersJobAdInput);
|
||||
MobileBannerAdOutput = Serializer.Serialize(MobileBannerAdInput);
|
||||
MobileUpdateNoticeOutput = Serializer.Serialize(MobileUpdateNoticeInput);
|
||||
FlagOptionOutput = Serializer.Serialize(FlagOptionInput);
|
||||
InboxItemOutput = Serializer.Serialize(InboxItemInput);
|
||||
InfoOutput = Serializer.Serialize(InfoInput);
|
||||
NetworkUserOutput = Serializer.Serialize(NetworkUserInput);
|
||||
NotificationOutput = Serializer.Serialize(NotificationInput);
|
||||
PostOutput = Serializer.Serialize(PostInput);
|
||||
PrivilegeOutput = Serializer.Serialize(PrivilegeInput);
|
||||
QuestionOutput = Serializer.Serialize(QuestionInput);
|
||||
QuestionTimelineOutput = Serializer.Serialize(QuestionTimelineInput);
|
||||
ReputationOutput = Serializer.Serialize(ReputationInput);
|
||||
ReputationHistoryOutput = Serializer.Serialize(ReputationHistoryInput);
|
||||
RevisionOutput = Serializer.Serialize(RevisionInput);
|
||||
SearchExcerptOutput = Serializer.Serialize(SearchExcerptInput);
|
||||
ShallowUserOutput = Serializer.Serialize(ShallowUserInput);
|
||||
SuggestedEditOutput = Serializer.Serialize(SuggestedEditInput);
|
||||
TagOutput = Serializer.Serialize(TagInput);
|
||||
TagScoreOutput = Serializer.Serialize(TagScoreInput);
|
||||
TagSynonymOutput = Serializer.Serialize(TagSynonymInput);
|
||||
TagWikiOutput = Serializer.Serialize(TagWikiInput);
|
||||
TopTagOutput = Serializer.Serialize(TopTagInput);
|
||||
UserOutput = Serializer.Serialize(UserInput);
|
||||
UserTimelineOutput = Serializer.Serialize(UserTimelineInput);
|
||||
WritePermissionOutput = Serializer.Serialize(WritePermissionInput);
|
||||
MobileBannerAdImageOutput = Serializer.Serialize(MobileBannerAdImageInput);
|
||||
SiteOutput = Serializer.Serialize(SiteInput);
|
||||
RelatedSiteOutput = Serializer.Serialize(RelatedSiteInput);
|
||||
ClosedDetailsOutput = Serializer.Serialize(ClosedDetailsInput);
|
||||
NoticeOutput = Serializer.Serialize(NoticeInput);
|
||||
MigrationInfoOutput = Serializer.Serialize(MigrationInfoInput);
|
||||
BadgeCountOutput = Serializer.Serialize(BadgeCountInput);
|
||||
StylingOutput = Serializer.Serialize(StylingInput);
|
||||
OriginalQuestionOutput = Serializer.Serialize(OriginalQuestionInput);
|
||||
}
|
||||
|
||||
// Serialize
|
||||
|
||||
[Benchmark] public object _PrimitiveSByteSerialize() => Serializer.Serialize(SByteInput);
|
||||
[Benchmark] public object _PrimitiveShortSerialize() => Serializer.Serialize(ShortInput);
|
||||
[Benchmark] public object _PrimitiveIntSerialize() => Serializer.Serialize(IntInput);
|
||||
[Benchmark] public object _PrimitiveLongSerialize() => Serializer.Serialize(LongInput);
|
||||
[Benchmark] public object _PrimitiveByteSerialize() => Serializer.Serialize(ByteInput);
|
||||
[Benchmark] public object _PrimitiveUShortSerialize() => Serializer.Serialize(UShortInput);
|
||||
[Benchmark] public object _PrimitiveUIntSerialize() => Serializer.Serialize(UIntInput);
|
||||
[Benchmark] public object _PrimitiveULongSerialize() => Serializer.Serialize(ULongInput);
|
||||
[Benchmark] public object _PrimitiveBoolSerialize() => Serializer.Serialize(BoolInput);
|
||||
[Benchmark] public object _PrimitiveStringSerialize() => Serializer.Serialize(StringInput);
|
||||
[Benchmark] public object _PrimitiveCharSerialize() => Serializer.Serialize(CharInput);
|
||||
[Benchmark] public object _PrimitiveDateTimeSerialize() => Serializer.Serialize(DateTimeInput);
|
||||
[Benchmark] public object _PrimitiveGuidSerialize() => Serializer.Serialize(GuidInput);
|
||||
[Benchmark] public object _PrimitiveBytesSerialize() => Serializer.Serialize(BytesInput);
|
||||
|
||||
[Benchmark] public object AccessTokenSerialize() => Serializer.Serialize(AccessTokenInput);
|
||||
[Benchmark] public object AccountMergeSerialize() => Serializer.Serialize(AccountMergeInput);
|
||||
[Benchmark] public object AnswerSerialize() => Serializer.Serialize(AnswerInput);
|
||||
[Benchmark] public object BadgeSerialize() => Serializer.Serialize(BadgeInput);
|
||||
[Benchmark] public object CommentSerialize() => Serializer.Serialize(CommentInput);
|
||||
[Benchmark] public object ErrorSerialize() => Serializer.Serialize(ErrorInput);
|
||||
[Benchmark] public object EventSerialize() => Serializer.Serialize(EventInput);
|
||||
[Benchmark] public object MobileFeedSerialize() => Serializer.Serialize(MobileFeedInput);
|
||||
[Benchmark] public object MobileQuestionSerialize() => Serializer.Serialize(MobileQuestionInput);
|
||||
[Benchmark] public object MobileRepChangeSerialize() => Serializer.Serialize(MobileRepChangeInput);
|
||||
[Benchmark] public object MobileInboxItemSerialize() => Serializer.Serialize(MobileInboxItemInput);
|
||||
[Benchmark] public object MobileBadgeAwardSerialize() => Serializer.Serialize(MobileBadgeAwardInput);
|
||||
[Benchmark] public object MobilePrivilegeSerialize() => Serializer.Serialize(MobilePrivilegeInput);
|
||||
[Benchmark] public object MobileCommunityBulletinSerialize() => Serializer.Serialize(MobileCommunityBulletinInput);
|
||||
[Benchmark] public object MobileAssociationBonusSerialize() => Serializer.Serialize(MobileAssociationBonusInput);
|
||||
[Benchmark] public object MobileCareersJobAdSerialize() => Serializer.Serialize(MobileCareersJobAdInput);
|
||||
[Benchmark] public object MobileBannerAdSerialize() => Serializer.Serialize(MobileBannerAdInput);
|
||||
[Benchmark] public object MobileUpdateNoticeSerialize() => Serializer.Serialize(MobileUpdateNoticeInput);
|
||||
[Benchmark] public object FlagOptionSerialize() => Serializer.Serialize(FlagOptionInput);
|
||||
[Benchmark] public object InboxItemSerialize() => Serializer.Serialize(InboxItemInput);
|
||||
[Benchmark] public object InfoSerialize() => Serializer.Serialize(InfoInput);
|
||||
[Benchmark] public object NetworkUserSerialize() => Serializer.Serialize(NetworkUserInput);
|
||||
[Benchmark] public object NotificationSerialize() => Serializer.Serialize(NotificationInput);
|
||||
[Benchmark] public object PostSerialize() => Serializer.Serialize(PostInput);
|
||||
[Benchmark] public object PrivilegeSerialize() => Serializer.Serialize(PrivilegeInput);
|
||||
[Benchmark] public object QuestionSerialize() => Serializer.Serialize(QuestionInput);
|
||||
[Benchmark] public object QuestionTimelineSerialize() => Serializer.Serialize(QuestionTimelineInput);
|
||||
[Benchmark] public object ReputationSerialize() => Serializer.Serialize(ReputationInput);
|
||||
[Benchmark] public object ReputationHistorySerialize() => Serializer.Serialize(ReputationHistoryInput);
|
||||
[Benchmark] public object RevisionSerialize() => Serializer.Serialize(RevisionInput);
|
||||
[Benchmark] public object SearchExcerptSerialize() => Serializer.Serialize(SearchExcerptInput);
|
||||
[Benchmark] public object ShallowUserSerialize() => Serializer.Serialize(ShallowUserInput);
|
||||
[Benchmark] public object SuggestedEditSerialize() => Serializer.Serialize(SuggestedEditInput);
|
||||
[Benchmark] public object TagSerialize() => Serializer.Serialize(TagInput);
|
||||
[Benchmark] public object TagScoreSerialize() => Serializer.Serialize(TagScoreInput);
|
||||
[Benchmark] public object TagSynonymSerialize() => Serializer.Serialize(TagSynonymInput);
|
||||
[Benchmark] public object TagWikiSerialize() => Serializer.Serialize(TagWikiInput);
|
||||
[Benchmark] public object TopTagSerialize() => Serializer.Serialize(TopTagInput);
|
||||
[Benchmark] public object UserSerialize() => Serializer.Serialize(UserInput);
|
||||
[Benchmark] public object UserTimelineSerialize() => Serializer.Serialize(UserTimelineInput);
|
||||
[Benchmark] public object WritePermissionSerialize() => Serializer.Serialize(WritePermissionInput);
|
||||
[Benchmark] public object MobileBannerAdImageSerialize() => Serializer.Serialize(MobileBannerAdImageInput);
|
||||
[Benchmark] public object SiteSerialize() => Serializer.Serialize(SiteInput);
|
||||
[Benchmark] public object RelatedSiteSerialize() => Serializer.Serialize(RelatedSiteInput);
|
||||
[Benchmark] public object ClosedDetailsSerialize() => Serializer.Serialize(ClosedDetailsInput);
|
||||
[Benchmark] public object NoticeSerialize() => Serializer.Serialize(NoticeInput);
|
||||
[Benchmark] public object MigrationInfoSerialize() => Serializer.Serialize(MigrationInfoInput);
|
||||
[Benchmark] public object BadgeCountSerialize() => Serializer.Serialize(BadgeCountInput);
|
||||
[Benchmark] public object StylingSerialize() => Serializer.Serialize(StylingInput);
|
||||
[Benchmark] public object OriginalQuestionSerialize() => Serializer.Serialize(OriginalQuestionInput);
|
||||
|
||||
// Deserialize
|
||||
|
||||
[Benchmark] public SByte _PrimitiveSByteDeserialize() => Serializer.Deserialize<SByte>(SByteOutput);
|
||||
[Benchmark] public short _PrimitiveShortDeserialize() => Serializer.Deserialize<short>(ShortOutput);
|
||||
[Benchmark] public Int32 _PrimitiveIntDeserialize() => Serializer.Deserialize<Int32>(IntOutput);
|
||||
[Benchmark] public Int64 _PrimitiveLongDeserialize() => Serializer.Deserialize<Int64>(LongOutput);
|
||||
[Benchmark] public Byte _PrimitiveByteDeserialize() => Serializer.Deserialize<Byte>(ByteOutput);
|
||||
[Benchmark] public ushort _PrimitiveUShortDeserialize() => Serializer.Deserialize<ushort>(UShortOutput);
|
||||
[Benchmark] public uint _PrimitiveUIntDeserialize() => Serializer.Deserialize<uint>(UIntOutput);
|
||||
[Benchmark] public ulong _PrimitiveULongDeserialize() => Serializer.Deserialize<ulong>(ULongOutput);
|
||||
[Benchmark] public bool _PrimitiveBoolDeserialize() => Serializer.Deserialize<bool>(BoolOutput);
|
||||
[Benchmark] public String _PrimitiveStringDeserialize() => Serializer.Deserialize<String>(StringOutput);
|
||||
[Benchmark] public Char _PrimitiveCharDeserialize() => Serializer.Deserialize<Char>(CharOutput);
|
||||
[Benchmark] public DateTime _PrimitiveDateTimeDeserialize() => Serializer.Deserialize<DateTime>(DateTimeOutput);
|
||||
[Benchmark] public Guid _PrimitiveGuidDeserialize() => Serializer.Deserialize<Guid>(GuidOutput);
|
||||
[Benchmark] public byte[] _PrimitiveBytesDeserialize() => Serializer.Deserialize<byte[]>(BytesOutput);
|
||||
[Benchmark] public AccessToken AccessTokenDeserialize() => Serializer.Deserialize<AccessToken>(AccessTokenOutput);
|
||||
[Benchmark] public AccountMerge AccountMergeDeserialize() => Serializer.Deserialize<AccountMerge>(AccountMergeOutput);
|
||||
[Benchmark] public Answer AnswerDeserialize() => Serializer.Deserialize<Answer>(AnswerOutput);
|
||||
[Benchmark] public Badge BadgeDeserialize() => Serializer.Deserialize<Badge>(BadgeOutput);
|
||||
[Benchmark] public Comment CommentDeserialize() => Serializer.Deserialize<Comment>(CommentOutput);
|
||||
[Benchmark] public Error ErrorDeserialize() => Serializer.Deserialize<Error>(ErrorOutput);
|
||||
[Benchmark] public Event EventDeserialize() => Serializer.Deserialize<Event>(EventOutput);
|
||||
[Benchmark] public MobileFeed MobileFeedDeserialize() => Serializer.Deserialize<MobileFeed>(MobileFeedOutput);
|
||||
[Benchmark] public MobileQuestion MobileQuestionDeserialize() => Serializer.Deserialize<MobileQuestion>(MobileQuestionOutput);
|
||||
[Benchmark] public MobileRepChange MobileRepChangeDeserialize() => Serializer.Deserialize<MobileRepChange>(MobileRepChangeOutput);
|
||||
[Benchmark] public MobileInboxItem MobileInboxItemDeserialize() => Serializer.Deserialize<MobileInboxItem>(MobileInboxItemOutput);
|
||||
[Benchmark] public MobileBadgeAward MobileBadgeAwardDeserialize() => Serializer.Deserialize<MobileBadgeAward>(MobileBadgeAwardOutput);
|
||||
[Benchmark] public MobilePrivilege MobilePrivilegeDeserialize() => Serializer.Deserialize<MobilePrivilege>(MobilePrivilegeOutput);
|
||||
[Benchmark] public MobileCommunityBulletin MobileCommunityBulletinDeserialize() => Serializer.Deserialize<MobileCommunityBulletin>(MobileCommunityBulletinOutput);
|
||||
[Benchmark] public MobileAssociationBonus MobileAssociationBonusDeserialize() => Serializer.Deserialize<MobileAssociationBonus>(MobileAssociationBonusOutput);
|
||||
[Benchmark] public MobileCareersJobAd MobileCareersJobAdDeserialize() => Serializer.Deserialize<MobileCareersJobAd>(MobileCareersJobAdOutput);
|
||||
[Benchmark] public MobileBannerAd MobileBannerAdDeserialize() => Serializer.Deserialize<MobileBannerAd>(MobileBannerAdOutput);
|
||||
[Benchmark] public MobileUpdateNotice MobileUpdateNoticeDeserialize() => Serializer.Deserialize<MobileUpdateNotice>(MobileUpdateNoticeOutput);
|
||||
[Benchmark] public FlagOption FlagOptionDeserialize() => Serializer.Deserialize<FlagOption>(FlagOptionOutput);
|
||||
[Benchmark] public InboxItem InboxItemDeserialize() => Serializer.Deserialize<InboxItem>(InboxItemOutput);
|
||||
[Benchmark] public Info InfoDeserialize() => Serializer.Deserialize<Info>(InfoOutput);
|
||||
[Benchmark] public NetworkUser NetworkUserDeserialize() => Serializer.Deserialize<NetworkUser>(NetworkUserOutput);
|
||||
[Benchmark] public Notification NotificationDeserialize() => Serializer.Deserialize<Notification>(NotificationOutput);
|
||||
[Benchmark] public Post PostDeserialize() => Serializer.Deserialize<Post>(PostOutput);
|
||||
[Benchmark] public Privilege PrivilegeDeserialize() => Serializer.Deserialize<Privilege>(PrivilegeOutput);
|
||||
[Benchmark] public Question QuestionDeserialize() => Serializer.Deserialize<Question>(QuestionOutput);
|
||||
[Benchmark] public QuestionTimeline QuestionTimelineDeserialize() => Serializer.Deserialize<QuestionTimeline>(QuestionTimelineOutput);
|
||||
[Benchmark] public Reputation ReputationDeserialize() => Serializer.Deserialize<Reputation>(ReputationOutput);
|
||||
[Benchmark] public ReputationHistory ReputationHistoryDeserialize() => Serializer.Deserialize<ReputationHistory>(ReputationHistoryOutput);
|
||||
[Benchmark] public Revision RevisionDeserialize() => Serializer.Deserialize<Revision>(RevisionOutput);
|
||||
[Benchmark] public SearchExcerpt SearchExcerptDeserialize() => Serializer.Deserialize<SearchExcerpt>(SearchExcerptOutput);
|
||||
[Benchmark] public ShallowUser ShallowUserDeserialize() => Serializer.Deserialize<ShallowUser>(ShallowUserOutput);
|
||||
[Benchmark] public SuggestedEdit SuggestedEditDeserialize() => Serializer.Deserialize<SuggestedEdit>(SuggestedEditOutput);
|
||||
[Benchmark] public Tag TagDeserialize() => Serializer.Deserialize<Tag>(TagOutput);
|
||||
[Benchmark] public TagScore TagScoreDeserialize() => Serializer.Deserialize<TagScore>(TagScoreOutput);
|
||||
[Benchmark] public TagSynonym TagSynonymDeserialize() => Serializer.Deserialize<TagSynonym>(TagSynonymOutput);
|
||||
[Benchmark] public TagWiki TagWikiDeserialize() => Serializer.Deserialize<TagWiki>(TagWikiOutput);
|
||||
[Benchmark] public TopTag TopTagDeserialize() => Serializer.Deserialize<TopTag>(TopTagOutput);
|
||||
[Benchmark] public User UserDeserialize() => Serializer.Deserialize<User>(UserOutput);
|
||||
[Benchmark] public UserTimeline UserTimelineDeserialize() => Serializer.Deserialize<UserTimeline>(UserTimelineOutput);
|
||||
[Benchmark] public WritePermission WritePermissionDeserialize() => Serializer.Deserialize<WritePermission>(WritePermissionOutput);
|
||||
[Benchmark] public MobileBannerAd.MobileBannerAdImage MobileBannerAdImageDeserialize() => Serializer.Deserialize<MobileBannerAd.MobileBannerAdImage>(MobileBannerAdImageOutput);
|
||||
[Benchmark] public Info.Site SiteDeserialize() => Serializer.Deserialize<Info.Site>(SiteOutput);
|
||||
[Benchmark] public Info.RelatedSite RelatedSiteDeserialize() => Serializer.Deserialize<Info.RelatedSite>(RelatedSiteOutput);
|
||||
[Benchmark] public Question.ClosedDetails ClosedDetailsDeserialize() => Serializer.Deserialize<Question.ClosedDetails>(ClosedDetailsOutput);
|
||||
[Benchmark] public Question.Notice NoticeDeserialize() => Serializer.Deserialize<Question.Notice>(NoticeOutput);
|
||||
[Benchmark] public Question.MigrationInfo MigrationInfoDeserialize() => Serializer.Deserialize<Question.MigrationInfo>(MigrationInfoOutput);
|
||||
[Benchmark] public User.BadgeCount BadgeCountDeserialize() => Serializer.Deserialize<User.BadgeCount>(BadgeCountOutput);
|
||||
[Benchmark] public Info.Site.Styling StylingDeserialize() => Serializer.Deserialize<Info.Site.Styling>(StylingOutput);
|
||||
[Benchmark] public Question.ClosedDetails.OriginalQuestion OriginalQuestionDeserialize() => Serializer.Deserialize<Question.ClosedDetails.OriginalQuestion>(OriginalQuestionOutput);
|
||||
}
|
||||
|
||||
|
||||
[Config(typeof(BenchmarkConfig))]
|
||||
public class ShortRun_AllSerializerBenchmark_BytesInOut
|
||||
{
|
||||
[ParamsSource(nameof(Serializers))]
|
||||
public SerializerBase Serializer;
|
||||
|
||||
// Currently BenchmarkdDotNet does not detect inherited ParamsSource so use copy and paste:)
|
||||
|
||||
public IEnumerable<SerializerBase> Serializers => new SerializerBase[]
|
||||
{
|
||||
new MessagePack_v1(),
|
||||
new MessagePack_v2(),
|
||||
new MessagePackLz4_v1(),
|
||||
new MessagePackLz4_v2(),
|
||||
new ProtobufNet(),
|
||||
new JsonNet(),
|
||||
new BinaryFormatter_(),
|
||||
new DataContract_(),
|
||||
new Hyperion_(),
|
||||
new Jil_(),
|
||||
new SpanJson_(),
|
||||
new Utf8Json_(),
|
||||
new MsgPackCli(),
|
||||
new FsPickler_(),
|
||||
new Ceras_(),
|
||||
};
|
||||
|
||||
protected static readonly ExpressionTreeFixture ExpressionTreeFixture = new ExpressionTreeFixture();
|
||||
|
||||
// primitives
|
||||
|
||||
protected static readonly int IntInput = ExpressionTreeFixture.Create<int>();
|
||||
|
||||
// models
|
||||
|
||||
protected static readonly Benchmark.Models.Answer AnswerInput = ExpressionTreeFixture.Create<Benchmark.Models.Answer>();
|
||||
|
||||
object IntOutput;
|
||||
object AnswerOutput;
|
||||
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
{
|
||||
// primitives
|
||||
IntOutput = Serializer.Serialize(IntInput);
|
||||
|
||||
// models
|
||||
AnswerOutput = Serializer.Serialize(AnswerInput);
|
||||
}
|
||||
|
||||
// Serialize
|
||||
|
||||
[Benchmark] public object _PrimitiveIntSerialize() => Serializer.Serialize(IntInput);
|
||||
[Benchmark] public object AnswerSerialize() => Serializer.Serialize(AnswerInput);
|
||||
|
||||
// Deserialize
|
||||
|
||||
[Benchmark] public Int32 _PrimitiveIntDeserialize() => Serializer.Deserialize<Int32>(IntOutput);
|
||||
|
||||
[Benchmark] public Answer AnswerDeserialize() => Serializer.Deserialize<Answer>(AnswerOutput);
|
||||
}
|
||||
|
||||
[Config(typeof(BenchmarkConfig))]
|
||||
public class ShortRun_MsgPackV1_Vs_MsgPackV2_BytesInOut
|
||||
{
|
||||
[ParamsSource(nameof(Serializers))]
|
||||
public SerializerBase Serializer;
|
||||
|
||||
// Currently BenchmarkdDotNet does not detect inherited ParamsSource so use copy and paste:)
|
||||
|
||||
public IEnumerable<SerializerBase> Serializers => new SerializerBase[]
|
||||
{
|
||||
new MessagePack_v1(),
|
||||
new MessagePack_v2(),
|
||||
};
|
||||
|
||||
protected static readonly ExpressionTreeFixture ExpressionTreeFixture = new ExpressionTreeFixture();
|
||||
|
||||
// primitives
|
||||
|
||||
protected static readonly int IntInput = ExpressionTreeFixture.Create<int>();
|
||||
|
||||
// models
|
||||
|
||||
protected static readonly Benchmark.Models.Answer AnswerInput = ExpressionTreeFixture.Create<Benchmark.Models.Answer>();
|
||||
|
||||
object IntOutput;
|
||||
object AnswerOutput;
|
||||
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
{
|
||||
// primitives
|
||||
IntOutput = Serializer.Serialize(IntInput);
|
||||
|
||||
// models
|
||||
AnswerOutput = Serializer.Serialize(AnswerInput);
|
||||
}
|
||||
|
||||
// Serialize
|
||||
|
||||
[Benchmark] public object _PrimitiveIntSerialize() => Serializer.Serialize(IntInput);
|
||||
[Benchmark] public object AnswerSerialize() => Serializer.Serialize(AnswerInput);
|
||||
|
||||
// Deserialize
|
||||
|
||||
[Benchmark] public Int32 _PrimitiveIntDeserialize() => Serializer.Deserialize<Int32>(IntOutput);
|
||||
|
||||
[Benchmark] public Answer AnswerDeserialize() => Serializer.Deserialize<Answer>(AnswerOutput);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
<AssemblyName>SerializerBenchmark</AssemblyName>
|
||||
<RootNamespace>Benchmark</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.11.3" />
|
||||
<PackageReference Include="Ceras" Version="4.0.27" />
|
||||
<PackageReference Include="FsPickler" Version="5.2.0" />
|
||||
<PackageReference Include="Hyperion" Version="0.9.8" />
|
||||
<PackageReference Include="Jil" Version="2.16.0" />
|
||||
<PackageReference Include="MsgPack.Cli" Version="1.0.1" />
|
||||
<PackageReference Include="protobuf-net" Version="2.4.0" />
|
||||
<PackageReference Include="SpanJson" Version="2.0.7" />
|
||||
<PackageReference Include="Utf8Json" Version="1.3.7" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\MessagePack\MessagePack.csproj">
|
||||
<Aliases>newmsgpack</Aliases>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="MessagePack_1_7_3_6">
|
||||
<HintPath>MessagePack_1_7_3_6.dll</HintPath>
|
||||
<Aliases>oldmsgpack</Aliases>
|
||||
<Private>true</Private>
|
||||
<SpecificVersion>false</SpecificVersion>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,24 @@
|
|||
using Benchmark.Serializers;
|
||||
using System.IO;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
|
||||
public class BinaryFormatter_ : SerializerBase
|
||||
{
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
using (var ms = new MemoryStream((byte[])input))
|
||||
{
|
||||
return (T)new BinaryFormatter().Deserialize(ms);
|
||||
}
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
new BinaryFormatter().Serialize(ms, input);
|
||||
ms.Flush();
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
using Benchmark.Serializers;
|
||||
|
||||
public class Ceras_ : SerializerBase
|
||||
{
|
||||
Ceras.CerasSerializer ceras = new Ceras.CerasSerializer();
|
||||
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return ceras.Deserialize<T>((byte[])input);
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return ceras.Serialize(input);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
using Benchmark.Serializers;
|
||||
using System.IO;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
public class DataContract_ : SerializerBase
|
||||
{
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
using (var ms = new MemoryStream((byte[])input))
|
||||
{
|
||||
return (T)new DataContractSerializer(typeof(T)).ReadObject(ms);
|
||||
}
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
new DataContractSerializer(typeof(T)).WriteObject(ms, input);
|
||||
ms.Flush();
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
using Benchmark.Serializers;
|
||||
using MBrace.FsPickler;
|
||||
using System.IO;
|
||||
|
||||
public class FsPickler_ : SerializerBase
|
||||
{
|
||||
static readonly BinarySerializer serializer = MBrace.FsPickler.FsPickler.CreateBinarySerializer();
|
||||
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
using (var ms = new MemoryStream((byte[])input))
|
||||
{
|
||||
return serializer.Deserialize<T>(ms);
|
||||
}
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
serializer.Serialize<T>(ms, input);
|
||||
ms.Flush();
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
//using Benchmark.Serializers;
|
||||
//using System.Buffers;
|
||||
//using Hagar;
|
||||
//using Hagar.Buffers;
|
||||
//using Hagar.Session;
|
||||
//using Microsoft.Extensions.DependencyInjection;
|
||||
//using System.IO.Pipelines;
|
||||
|
||||
//public class Hagar_ : SerializerBase
|
||||
//{
|
||||
// readonly ServiceProvider serviceProvider;
|
||||
|
||||
// public Hagar_()
|
||||
// {
|
||||
// this.serviceProvider = new ServiceCollection()
|
||||
// .AddHagar()
|
||||
// .AddISerializableSupport()
|
||||
// .AddSerializers(typeof(Hagar_).Assembly) // this assembly
|
||||
// .BuildServiceProvider();
|
||||
// }
|
||||
|
||||
// public override T Deserialize<T>(object input)
|
||||
// {
|
||||
// var serializer = serviceProvider.GetRequiredService<Serializer<T>>();
|
||||
// var sessionPool = serviceProvider.GetRequiredService<SessionPool>();
|
||||
|
||||
// var pipe = new Pipe();
|
||||
// pipe.Writer.WriteAsync((byte[])input).GetAwaiter().GetResult();
|
||||
// pipe.Writer.Complete();
|
||||
|
||||
// using (var session = sessionPool.GetSession())
|
||||
// {
|
||||
// pipe.Reader.TryRead(out var readResult);
|
||||
// var reader = new Reader(readResult.Buffer, session);
|
||||
// var result = serializer.Deserialize(ref reader);
|
||||
// return result;
|
||||
// }
|
||||
// }
|
||||
|
||||
// public override object Serialize<T>(T input)
|
||||
// {
|
||||
// var serializer = serviceProvider.GetRequiredService<Serializer<T>>();
|
||||
// var sessionPool = serviceProvider.GetRequiredService<SessionPool>();
|
||||
|
||||
// var pipe = new Pipe();
|
||||
|
||||
// using (var session = sessionPool.GetSession())
|
||||
// {
|
||||
// var writer = pipe.Writer.CreateWriter(session);
|
||||
// serializer.Serialize(ref writer, input);
|
||||
// pipe.Writer.Complete();
|
||||
// pipe.Reader.TryRead(out var result);
|
||||
// return result.Buffer.ToArray();
|
||||
// }
|
||||
// }
|
||||
//}
|
|
@ -0,0 +1,26 @@
|
|||
using Benchmark.Serializers;
|
||||
using Hyperion;
|
||||
using System.IO;
|
||||
|
||||
public class Hyperion_ : SerializerBase
|
||||
{
|
||||
static readonly Serializer serializer = new Hyperion.Serializer();
|
||||
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
using (var ms = new MemoryStream((byte[])input))
|
||||
{
|
||||
return serializer.Deserialize<T>(ms);
|
||||
}
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
serializer.Serialize(input, ms);
|
||||
ms.Flush();
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
using Benchmark.Serializers;
|
||||
using Jil;
|
||||
using System.Text;
|
||||
|
||||
public class Jil_ : SerializerBase
|
||||
{
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return Encoding.UTF8.GetBytes(Jil.JSON.Serialize(input, Options.ISO8601));
|
||||
}
|
||||
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return Jil.JSON.Deserialize<T>(Encoding.UTF8.GetString((byte[])input), Options.ISO8601);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
using Benchmark.Serializers;
|
||||
using Newtonsoft.Json;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
public class JsonNet : SerializerBase
|
||||
{
|
||||
static readonly JsonSerializer serializer = new JsonSerializer();
|
||||
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
using (var ms = new MemoryStream((byte[])input))
|
||||
using (var sr = new StreamReader(ms, Encoding.UTF8))
|
||||
using (var jr = new JsonTextReader(sr))
|
||||
{
|
||||
return serializer.Deserialize<T>(jr);
|
||||
}
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
using (var sw = new StreamWriter(ms, Encoding.UTF8))
|
||||
using (var jw = new JsonTextWriter(sw))
|
||||
{
|
||||
serializer.Serialize(jw, input);
|
||||
}
|
||||
ms.Flush();
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
extern alias oldmsgpack;
|
||||
extern alias newmsgpack;
|
||||
|
||||
using Benchmark.Serializers;
|
||||
|
||||
public class MessagePack_v1 : SerializerBase
|
||||
{
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return oldmsgpack::MessagePack.MessagePackSerializer.Deserialize<T>((byte[])input);
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return oldmsgpack::MessagePack.MessagePackSerializer.Serialize<T>(input);
|
||||
}
|
||||
}
|
||||
|
||||
public class MessagePack_v2 : SerializerBase
|
||||
{
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return newmsgpack::MessagePack.MessagePackSerializer.Deserialize<T>((byte[])input);
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return newmsgpack::MessagePack.MessagePackSerializer.Serialize<T>(input);
|
||||
}
|
||||
}
|
||||
|
||||
public class MessagePackLz4_v1 : SerializerBase
|
||||
{
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return oldmsgpack::MessagePack.LZ4MessagePackSerializer.Deserialize<T>((byte[])input);
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return oldmsgpack::MessagePack.LZ4MessagePackSerializer.Serialize<T>(input);
|
||||
}
|
||||
}
|
||||
|
||||
public class MessagePackLz4_v2 : SerializerBase
|
||||
{
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return newmsgpack::MessagePack.LZ4MessagePackSerializer.Deserialize<T>((byte[])input);
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return newmsgpack::MessagePack.LZ4MessagePackSerializer.Serialize<T>(input);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using Benchmark.Serializers;
|
||||
|
||||
public class MsgPackCli : SerializerBase
|
||||
{
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return MsgPack.Serialization.MessagePackSerializer.Get<T>().UnpackSingleObject((byte[])input);
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return MsgPack.Serialization.MessagePackSerializer.Get<T>().PackSingleObject(input);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
using Benchmark.Serializers;
|
||||
using ProtoBuf;
|
||||
using System.IO;
|
||||
|
||||
public class ProtobufNet : SerializerBase
|
||||
{
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
using (var ms = new MemoryStream((byte[])input))
|
||||
{
|
||||
return Serializer.Deserialize<T>(ms);
|
||||
}
|
||||
}
|
||||
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
Serializer.Serialize(ms, input);
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
using System;
|
||||
|
||||
namespace Benchmark.Serializers
|
||||
{
|
||||
public abstract class SerializerBase
|
||||
{
|
||||
public abstract object Serialize<T>(T input);
|
||||
|
||||
public abstract T Deserialize<T>(object input);
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using Benchmark.Serializers;
|
||||
|
||||
public class SpanJson_ : SerializerBase
|
||||
{
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return SpanJson.JsonSerializer.Generic.Utf8.Serialize(input);
|
||||
}
|
||||
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return SpanJson.JsonSerializer.Generic.Utf8.Deserialize<T>((byte[])input);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using Benchmark.Serializers;
|
||||
|
||||
public class Utf8Json_ : SerializerBase
|
||||
{
|
||||
public override object Serialize<T>(T input)
|
||||
{
|
||||
return Utf8Json.JsonSerializer.Serialize(input);
|
||||
}
|
||||
|
||||
public override T Deserialize<T>(object input)
|
||||
{
|
||||
return Utf8Json.JsonSerializer.Deserialize<T>((byte[])input);
|
||||
}
|
||||
}
|
|
@ -11,10 +11,17 @@
|
|||
<Title>MessagePack for C#</Title>
|
||||
<Description>Extremely Fast MessagePack(MsgPack) Serializer for C#(.NET, .NET Core, Unity, Xamarin).</Description>
|
||||
<PackageTags>MsgPack;MessagePack;Serialization;Formatter;Serializer;Unity;Xamarin</PackageTags>
|
||||
<AssemblyName>MessagePack</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="bin\**" />
|
||||
<Compile Remove="obj\**" />
|
||||
<EmbeddedResource Remove="bin\**" />
|
||||
<EmbeddedResource Remove="obj\**" />
|
||||
<None Remove="*.meta" />
|
||||
<None Remove="bin\**" />
|
||||
<None Remove="obj\**" />
|
||||
<None Remove="Resolvers\*.meta" />
|
||||
<None Remove="Internal\*.meta" />
|
||||
<None Remove="Formatters\*.meta" />
|
||||
|
|
Загрузка…
Ссылка в новой задаче