Skip to content

Commit

Permalink
[edit] expando test
Browse files Browse the repository at this point in the history
  • Loading branch information
i4004 committed Jan 27, 2024
1 parent d432088 commit d8ed196
Showing 1 changed file with 47 additions and 21 deletions.
68 changes: 47 additions & 21 deletions src/Simplify.Web.Benchmark/ExpandoObjectAndDictionaryBenchmarks.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Dynamic;
using BenchmarkDotNet.Attributes;
Expand All @@ -7,52 +6,79 @@ namespace Simplify.Web.Benchmark;

[MemoryDiagnoser]
public class ExpandoObjectAndDictionaryBenchmarks

{
private const int NumValues = 1;
[Params(1, 5, 20, 100, 300, 1000)]
public int NumValues;

[Benchmark]
public void ExpandoObjectTest()
public void ExpandoBased_Combined_Test()
{
var expandoObject = CreateAndFillExpando();

dynamic expandoDynamicField = expandoObject;
TestDynamic(expandoObject);
TesDictionary(expandoObject);
}

for (int i = 0; i < NumValues; i++)
{
string value = expandoDynamicField.Key0;
Trace.WriteLine(value);
}
[Benchmark]
public void ExpandoBased_Dynamic_Test()
{
var expandoObject = CreateAndFillExpando();

var expandoDictionaryField = expandoObject;
TestDynamic(expandoObject);
}

for (int i = 0; i < NumValues; i++)
{
string value = expandoDictionaryField[$"Key{i}"].ToString();
Trace.WriteLine(value);
}
[Benchmark]
public void ExpandoBased_Dictionary_Test()
{
var expandoObject = CreateAndFillExpando();

TesDictionary(expandoObject);
}

[Benchmark]
public void DictionaryBased_Combined_Test()
{
var dictionary = CreateAndFillDictionary();

TestDynamic(ToExpando(dictionary));
TesDictionary(dictionary);
}

[Benchmark]
public void DictionaryTest()
public void DictionaryBased_Expando_Test()
{
var dictionary = CreateAndFillDictionary();

dynamic dictionaryDynamicField = ToExpando(dictionary);
TestDynamic(ToExpando(dictionary));
}

[Benchmark]
public void DictionaryBased_Dictionary_Test()
{
var dictionary = CreateAndFillDictionary();

TesDictionary(dictionary);
}
private void TestDynamic(dynamic list)
{
for (int i = 0; i < NumValues; i++)
{
string value = dictionaryDynamicField.Key0;
string value = list.Key0;
Trace.WriteLine(value);
}
}

private void TesDictionary(IDictionary<string, object> list)
{
for (int i = 0; i < NumValues; i++)
{
string value = dictionary[$"Key{i}"].ToString();
string value = list[$"Key{i}"].ToString();
Trace.WriteLine(value);
}
}

private static IDictionary<string, object> CreateAndFillExpando()
private IDictionary<string, object> CreateAndFillExpando()
{
var expandoDict = (IDictionary<string, object>)new ExpandoObject();

Expand All @@ -62,7 +88,7 @@ private static IDictionary<string, object> CreateAndFillExpando()
return expandoDict;
}

private static Dictionary<string, object> CreateAndFillDictionary()
private Dictionary<string, object> CreateAndFillDictionary()
{
var dictionary = new Dictionary<string, object>();

Expand Down

0 comments on commit d8ed196

Please sign in to comment.