From 0f4f19ccf102015cbe287efe1989b29fcfe3205d Mon Sep 17 00:00:00 2001 From: "fabien.menager" Date: Sat, 31 May 2025 22:42:34 +0200 Subject: [PATCH 1/5] Improve memory allocation thanks to expression trees --- .../Metadata/ColumnMetadata.cs | 20 +---- .../Metadata/PropertyAccessor.cs | 83 ++++++++----------- 2 files changed, 38 insertions(+), 65 deletions(-) diff --git a/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/ColumnMetadata.cs b/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/ColumnMetadata.cs index 3d51957..3d1c899 100644 --- a/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/ColumnMetadata.cs +++ b/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/ColumnMetadata.cs @@ -1,7 +1,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; -using PhenX.EntityFrameworkCore.BulkInsert.Abstractions; using PhenX.EntityFrameworkCore.BulkInsert.Dialect; using PhenX.EntityFrameworkCore.BulkInsert.Options; @@ -9,7 +8,7 @@ namespace PhenX.EntityFrameworkCore.BulkInsert.Metadata; internal sealed class ColumnMetadata(IProperty property, SqlDialectBuilder dialect) { - private readonly PropertyAccessor.Getter _getter = BuildGetter(property); + private readonly Func _getter = BuildGetter(property); public IProperty Property { get; } = property; @@ -44,7 +43,7 @@ internal sealed class ColumnMetadata(IProperty property, SqlDialectBuilder dial return result; } - private static PropertyAccessor.Getter BuildGetter(IProperty property) + private static Func BuildGetter(IProperty property) { var valueConverter = property.GetValueConverter() ?? @@ -52,20 +51,7 @@ internal sealed class ColumnMetadata(IProperty property, SqlDialectBuilder dial var propInfo = property.PropertyInfo!; - var actualGetter = - PropertyAccessor.CreateUntypedGetter( - propInfo, - property.DeclaringType.ClrType, - property.ClrType); - - if (valueConverter == null) - { - return actualGetter; - } - - var converter = valueConverter.ConvertToProvider; - - return source => converter(actualGetter(source)); + return PropertyAccessor.CreateGetter(propInfo, valueConverter?.ConvertToProviderExpression); } private static string GetStoreDefinition(IProperty property) diff --git a/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs b/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs index b503899..90d7d17 100644 --- a/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs +++ b/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs @@ -1,66 +1,53 @@ -using System.Reflection.Emit; +using System.Linq.Expressions; using System.Reflection; namespace PhenX.EntityFrameworkCore.BulkInsert.Metadata; internal static class PropertyAccessor { - public delegate TValue Getter(TSource source); - - public static Getter CreateUntypedGetter(PropertyInfo propertyInfo, Type sourceType, Type valueType) + public static Func CreateGetter(PropertyInfo propertyInfo, LambdaExpression? converter = null) { - var method = - typeof(PropertyAccessor).GetMethod(nameof(CreateInternalUntypedGetter), BindingFlags.NonPublic | BindingFlags.Static)! - .MakeGenericMethod(sourceType, valueType); - - return (Getter)method.Invoke(null, [propertyInfo])!; - } + ArgumentNullException.ThrowIfNull(propertyInfo); + var getMethod = propertyInfo.GetMethod ?? throw new ArgumentException("Property does not have a getter."); - private static Getter CreateInternalUntypedGetter(PropertyInfo propertyInfo) - { - var getter = CreateGetter(propertyInfo); + var instanceParam = Expression.Parameter(typeof(object), "instance"); - return source => getter((TSource)source!); - } + // Convert object to the declaring type + Expression typedInstance = propertyInfo.DeclaringType!.IsValueType + ? Expression.Unbox(instanceParam, propertyInfo.DeclaringType) + : Expression.Convert(instanceParam, propertyInfo.DeclaringType); - public static Getter CreateGetter(PropertyInfo propertyInfo) - { - if (!propertyInfo.CanRead) - { - return x => throw new NotSupportedException(); - } + // Call Getter + Expression getterCall = Expression.Call(typedInstance, getMethod); - var bakingField = - propertyInfo.DeclaringType!.GetField($"<{propertyInfo.Name}>k__BackingField", - BindingFlags.NonPublic | - BindingFlags.Instance); + var propertyType = propertyInfo.PropertyType; - var propertyGetMethod = propertyInfo.GetGetMethod()!; - - var getMethod = new DynamicMethod(propertyGetMethod.Name, typeof(TValue), [typeof(TSource)], true); - var getGenerator = getMethod.GetILGenerator(); - - // Load this to stack. - getGenerator.Emit(OpCodes.Ldarg_0); - - if (bakingField != null && !propertyGetMethod.IsVirtual) - { - // Get field directly. - getGenerator.Emit(OpCodes.Ldfld, bakingField); - } - else if (propertyGetMethod.IsVirtual) - { - // Call the virtual property. - getGenerator.Emit(OpCodes.Callvirt, propertyGetMethod); - } - else + // If the converter is provided, we call it + if (converter != null) { - // Call the non virtual property. - getGenerator.Emit(OpCodes.Call, propertyGetMethod); + // Validate the converter input type matches property type + var convIn = converter.Parameters[0].Type; + if (!convIn.IsAssignableFrom(propertyType) && !propertyType.IsAssignableFrom(convIn)) + { + throw new ArgumentException($"Converter input must be assignable from property type ({propertyType} -> {convIn})"); + } + + // If property type != converter param, convert + var converterInput = getterCall; + if (convIn != propertyType) + { + converterInput = Expression.Convert(getterCall, convIn); + } + + getterCall = Expression.Invoke(converter, converterInput); + + propertyType = getterCall.Type; } - getGenerator.Emit(OpCodes.Ret); + var finalExpr = propertyType.IsValueType + ? Expression.Convert(getterCall, typeof(object)) + : getterCall; - return getMethod.CreateDelegate>(); + return Expression.Lambda>(finalExpr, instanceParam).Compile(); } } From 1cdc24afae4b1e03befc3d91ce9e6827dfc471ec Mon Sep 17 00:00:00 2001 From: "fabien.menager" Date: Sat, 31 May 2025 23:32:24 +0200 Subject: [PATCH 2/5] Update benchmark results --- images/bench-mysql.png | Bin 27845 -> 27895 bytes images/bench-postgresql.png | Bin 28912 -> 28616 bytes images/bench-sqlite.png | Bin 29075 -> 29212 bytes images/bench-sqlserver.png | Bin 29023 -> 29305 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/images/bench-mysql.png b/images/bench-mysql.png index b4a14e1d32de35b1b9447976f11c6f6525ed042a..cb646b35d34c13475fae35a1de04172965ff9312 100644 GIT binary patch literal 27895 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 literal 27845 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 diff --git a/images/bench-postgresql.png b/images/bench-postgresql.png index da96f255fcb333012e36daf5c29470024e84268a..b6f1767d55897eddf47741770837758976cc0bb1 100644 GIT binary patch literal 28616 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≪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 H!PEZ&?!H}N literal 28912 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 NlNLem?aD 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 NNl`hGT%l*K{{cp1I*0%O diff --git a/images/bench-sqlite.png b/images/bench-sqlite.png index 4a3c6e3319a345c01650a37367198ca05fa9db9f..684565895f3b609eb3d60272ca3f008c75a58acf 100644 GIT binary patch literal 29212 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 literal 29075 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 diff --git a/images/bench-sqlserver.png b/images/bench-sqlserver.png index bce6c63430ce23d9ff06127d7e8fcc6ad19d769e..6e067c287cf960666a50f12a09f3fa0eaf9fa881 100644 GIT binary patch literal 29305 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 literal 29023 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 Date: Sun, 1 Jun 2025 14:52:20 +0200 Subject: [PATCH 3/5] Add benchmark for getters --- .../Metadata/PropertyAccessor.cs | 22 +-- ...henX.EntityFrameworkCore.BulkInsert.csproj | 1 + .../GetValueComparator.IlGetter.cs | 64 ++++++++ .../GetValueComparator.cs | 147 ++++++++++++++++++ .../Program.cs | 4 + 5 files changed, 227 insertions(+), 11 deletions(-) create mode 100644 tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.IlGetter.cs create mode 100644 tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.cs diff --git a/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs b/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs index 90d7d17..f496da4 100644 --- a/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs +++ b/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs @@ -18,7 +18,7 @@ internal static class PropertyAccessor : Expression.Convert(instanceParam, propertyInfo.DeclaringType); // Call Getter - Expression getterCall = Expression.Call(typedInstance, getMethod); + Expression getterExpression = Expression.Call(typedInstance, getMethod); var propertyType = propertyInfo.PropertyType; @@ -26,27 +26,27 @@ internal static class PropertyAccessor if (converter != null) { // Validate the converter input type matches property type - var convIn = converter.Parameters[0].Type; - if (!convIn.IsAssignableFrom(propertyType) && !propertyType.IsAssignableFrom(convIn)) + var converterParamType = converter.Parameters[0].Type; + if (!converterParamType.IsAssignableFrom(propertyType) && !propertyType.IsAssignableFrom(converterParamType)) { - throw new ArgumentException($"Converter input must be assignable from property type ({propertyType} -> {convIn})"); + throw new ArgumentException($"Converter input must be assignable from property type ({propertyType} -> {converterParamType})"); } // If property type != converter param, convert - var converterInput = getterCall; - if (convIn != propertyType) + var converterInput = getterExpression; + if (converterParamType != propertyType) { - converterInput = Expression.Convert(getterCall, convIn); + converterInput = Expression.Convert(getterExpression, converterParamType); } - getterCall = Expression.Invoke(converter, converterInput); + getterExpression = Expression.Invoke(converter, converterInput); - propertyType = getterCall.Type; + propertyType = getterExpression.Type; } var finalExpr = propertyType.IsValueType - ? Expression.Convert(getterCall, typeof(object)) - : getterCall; + ? Expression.Convert(getterExpression, typeof(object)) + : getterExpression; return Expression.Lambda>(finalExpr, instanceParam).Compile(); } diff --git a/src/PhenX.EntityFrameworkCore.BulkInsert/PhenX.EntityFrameworkCore.BulkInsert.csproj b/src/PhenX.EntityFrameworkCore.BulkInsert/PhenX.EntityFrameworkCore.BulkInsert.csproj index 5ee0a22..90be5d2 100644 --- a/src/PhenX.EntityFrameworkCore.BulkInsert/PhenX.EntityFrameworkCore.BulkInsert.csproj +++ b/src/PhenX.EntityFrameworkCore.BulkInsert/PhenX.EntityFrameworkCore.BulkInsert.csproj @@ -6,6 +6,7 @@ + diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.IlGetter.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.IlGetter.cs new file mode 100644 index 0000000..d63a0a7 --- /dev/null +++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.IlGetter.cs @@ -0,0 +1,64 @@ +using System.Reflection; +using System.Reflection.Emit; + +namespace PhenX.EntityFrameworkCore.BulkInsert.Benchmark; + +public partial class GetValueComparator +{ + public static Func CreateUntypedGetter(PropertyInfo propertyInfo, Type sourceType, Type valueType) + { + var method = + typeof(GetValueComparator).GetMethod(nameof(CreateInternalUntypedGetter), BindingFlags.NonPublic | BindingFlags.Static)! + .MakeGenericMethod(sourceType, valueType); + + return (Func)method.Invoke(null, [propertyInfo])!; + } + + private static Func CreateInternalUntypedGetter(PropertyInfo propertyInfo) + { + var getter = CreateGetter(propertyInfo); + + return source => getter((TSource)source!); + } + + public static Func CreateGetter(PropertyInfo propertyInfo) + { + if (!propertyInfo.CanRead) + { + return x => throw new NotSupportedException(); + } + + var bakingField = + propertyInfo.DeclaringType!.GetField($"<{propertyInfo.Name}>k__BackingField", + BindingFlags.NonPublic | + BindingFlags.Instance); + + var propertyGetMethod = propertyInfo.GetGetMethod()!; + + var getMethod = new DynamicMethod(propertyGetMethod.Name, typeof(TValue), [typeof(TSource)], true); + var getGenerator = getMethod.GetILGenerator(); + + // Load this to stack. + getGenerator.Emit(OpCodes.Ldarg_0); + + if (bakingField != null && !propertyGetMethod.IsVirtual) + { + // Get field directly. + getGenerator.Emit(OpCodes.Ldfld, bakingField); + } + else if (propertyGetMethod.IsVirtual) + { + // Call the virtual property. + getGenerator.Emit(OpCodes.Callvirt, propertyGetMethod); + } + else + { + // Call the non virtual property. + getGenerator.Emit(OpCodes.Call, propertyGetMethod); + } + + getGenerator.Emit(OpCodes.Ret); + + return getMethod.CreateDelegate>(); + } +} diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.cs new file mode 100644 index 0000000..afc5b8a --- /dev/null +++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.cs @@ -0,0 +1,147 @@ +using System.Linq.Expressions; +using System.Reflection; + +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Engines; + +using PhenX.EntityFrameworkCore.BulkInsert.Metadata; + +namespace PhenX.EntityFrameworkCore.BulkInsert.Benchmark; + +[MemoryDiagnoser] +[SimpleJob(RunStrategy.ColdStart, launchCount: 1, warmupCount: 0, iterationCount: 10)] +public partial class GetValueComparator +{ + [Params(1_000_000)] public int N; + + private IReadOnlyList data = []; + + [IterationSetup] + public void IterationSetup() + { + data = Enumerable.Range(1, N).Select(i => new TestEntity + { + Name = $"Entity{i}", + Price = (decimal)(i * 0.1), + Identifier = Guid.NewGuid(), + NumericEnumValue = (NumericEnum)(i % 2), + }).ToList(); + } + + private static Dictionary>> Converters = new() + { + { nameof(TestEntity.NumericEnumValue), v => (int) v}, + }; + + private static readonly PropertyInfo[] PropertyInfos = typeof(TestEntity).GetProperties(); + + private static readonly Func[] PropertyInfoGetValueGetters = PropertyInfos + .Select>(propertyInfo => + { + var converter = Converters.TryGetValue(propertyInfo.Name, out var expression) + ? expression.Compile() + : null; + + if (converter == null) + { + return propertyInfo.GetValue; + } + + return entity => converter(propertyInfo.GetValue(entity)); + }) + .ToArray(); + + private static readonly Func[] PropertyInfoIlGetters = PropertyInfos + .Select>(propertyInfo => + { + var converter = Converters.TryGetValue(propertyInfo.Name, out var expression) + ? expression.Compile() + : null; + + var getter = CreateUntypedGetter(propertyInfo, propertyInfo.DeclaringType!, propertyInfo.PropertyType); + + if (converter == null) + { + return getter; + } + + return entity => converter(getter(entity)); + }) + .ToArray(); + + private static readonly Func[] PropertyAccessorGetters = PropertyInfos + .Select>(propertyInfo => + { + var converter = Converters.TryGetValue(propertyInfo.Name, out var expression) + ? expression + : null; + + return PropertyAccessor.CreateGetter(propertyInfo, converter); + }) + .ToArray(); + + [Benchmark(Baseline = true)] + public void Native() + { + for (var i = 0; i < data.Count; i++) + { + var entity = data[i]; + + _ = entity.Id; + _ = entity.Name; + _ = entity.Price; + _ = entity.Identifier; + _ = (int) entity.NumericEnumValue; + _ = entity.CreatedAt; + _ = entity.UpdatedAt; + } + } + + [Benchmark] + public void PropertyInfo_GetValue() + { + for (var i = 0; i < data.Count; i++) + { + var entity = data[i]; + + for (var j = 0; j < PropertyInfoGetValueGetters.Length; j++) + { + var getter = PropertyInfoGetValueGetters[j]; + + _ = getter(entity); + } + } + } + + [Benchmark] + public void ExpressionTreeGetter() + { + for (var i = 0; i < data.Count; i++) + { + var entity = data[i]; + + for (var j = 0; j < PropertyAccessorGetters.Length; j++) + { + var getter = PropertyAccessorGetters[j]; + + _ = getter(entity); + } + } + } + + [Benchmark] + public void IlGetter() + { + for (var i = 0; i < data.Count; i++) + { + var entity = data[i]; + + for (var j = 0; j < PropertyInfoIlGetters.Length; j++) + { + var getter = PropertyInfoIlGetters[j]; + + _ = getter(entity); + } + } + } +} diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Program.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Program.cs index 60b844f..67edc71 100644 --- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Program.cs +++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/Program.cs @@ -13,6 +13,10 @@ public static void Main(string[] args) .Create(DefaultConfig.Instance) .WithOptions(ConfigOptions.DisableOptimizationsValidator); + // Micro benchmark for value getters + BenchmarkRunner.Run(config); + + // Library comparison benchmarks var comparators = new[] { typeof(LibComparatorMySql), From 1940476f816cbfb28ba7ef562e3446687958b219 Mon Sep 17 00:00:00 2001 From: "fabien.menager" Date: Sun, 1 Jun 2025 14:56:10 +0200 Subject: [PATCH 4/5] Native benchmark more accurate --- .../GetValueComparator.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.cs b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.cs index afc5b8a..696b409 100644 --- a/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.cs +++ b/tests/PhenX.EntityFrameworkCore.BulkInsert.Benchmark/GetValueComparator.cs @@ -83,6 +83,8 @@ public void IterationSetup() [Benchmark(Baseline = true)] public void Native() { + var enumConverter = Converters[nameof(TestEntity.NumericEnumValue)].Compile(); + for (var i = 0; i < data.Count; i++) { var entity = data[i]; @@ -91,7 +93,7 @@ public void Native() _ = entity.Name; _ = entity.Price; _ = entity.Identifier; - _ = (int) entity.NumericEnumValue; + _ = enumConverter(entity.NumericEnumValue); _ = entity.CreatedAt; _ = entity.UpdatedAt; } From e442684c8b266d65f80e62aaa98a5cb0028ba05c Mon Sep 17 00:00:00 2001 From: "fabien.menager" Date: Sun, 1 Jun 2025 15:48:01 +0200 Subject: [PATCH 5/5] Improve naming --- .../Metadata/PropertyAccessor.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs b/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs index f496da4..8012739 100644 --- a/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs +++ b/src/PhenX.EntityFrameworkCore.BulkInsert/Metadata/PropertyAccessor.cs @@ -44,10 +44,10 @@ internal static class PropertyAccessor propertyType = getterExpression.Type; } - var finalExpr = propertyType.IsValueType + var finalExpression = propertyType.IsValueType ? Expression.Convert(getterExpression, typeof(object)) : getterExpression; - return Expression.Lambda>(finalExpr, instanceParam).Compile(); + return Expression.Lambda>(finalExpression, instanceParam).Compile(); } }