Skip to content

Repository files navigation

In-Memory Mapping Benchmarks

Tests the following approaches:

  1. Dynamic: creating object (hierarchies) by direct assignment of values from a dynamic (anonymous) object using C# DLR dispatch
  2. AutoMapper: using the same in-memory (anonymous) object and mapping to a typed model.
  3. MessagePack: deserializing from a memory stream (same object structure, but from annotated object model)
  4. System.Text.Json: deserializing from a memory stream populated by serializing the (anonymous) object using Json.

results

BenchmarkDotNet v0.13.12, Windows 11 (10.0.22622.575)
Intel Core i9-10900T CPU 1.90GHz, 1 CPU, 20 logical and 10 physical cores
.NET SDK 9.0.100-preview.2.24074.1
[Host] : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
.NET 6.0 : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2
.NET 8.0 : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
.NET Framework 4.7.2 : .NET Framework 4.8.1 (4.8.9181.0), X64 RyuJIT VectorSize=256
MethodJobRuntimeMeanErrorStdDevRatioGen0Gen1AllocatedAlloc Ratio
Dynamic.NET 6.0.NET 6.020.62 μs0.372 μs0.290 μs0.553.20430.091632.82 KB0.87
Dynamic.NET 7.0.NET 7.020.08 μs0.307 μs0.257 μs0.543.20430.091632.82 KB0.87
Dynamic.NET Framework 4.7.2.NET Framework 4.7.237.34 μs0.320 μs0.284 μs1.006.10350.183137.63 KB1.00
AutoMapper.NET 6.0.NET 6.015.79 μs0.284 μs0.237 μs0.472.28880.061023.41 KB0.83
AutoMapper.NET 7.0.NET 7.015.65 μs0.153 μs0.143 μs0.462.28880.061023.41 KB0.83
AutoMapper.NET Framework 4.7.2.NET Framework 4.7.233.68 μs0.374 μs0.350 μs1.004.57760.122128.2 KB1.00
MessagePack.NET 6.0.NET 6.013.91 μs0.104 μs0.092 μs0.592.15150.061022.11 KB0.82
MessagePack.NET 7.0.NET 7.013.39 μs0.094 μs0.088 μs0.572.15150.061022.11 KB0.82
MessagePack.NET Framework 4.7.2.NET Framework 4.7.223.46 μs0.265 μs0.222 μs1.004.36400.122126.89 KB1.00
System Json.NET 6.0.NET 6.0122.63 μs1.462 μs1.368 μs0.546.34770.732465.71 KB0.93
System Json.NET 7.0.NET 7.0117.95 μs1.102 μs0.977 μs0.526.10350.610463.39 KB0.90
System Json.NET Framework 4.7.2.NET Framework 4.7.2228.99 μs1.725 μs1.529 μs1.0011.47460.732470.63 KB1.00

About

A comparison of in-memory mapping approaches

Resources

Code of conduct

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages