csharp / expert
Snippet
Laufzeit-Performance-Optimierung durch Expression-Trees
Expression-Trees ermöglichen es, Code als Datenstruktur zu definieren und zur Laufzeit in ausführbare IL (Intermediate Language) zu kompilieren. Diese Technik wird verwendet, um hochoptimierte Logik dynamisch zu erstellen, wodurch der Overhead von Reflection oder Interpretation umgangen wird, während die Typsicherheit gewährleistet bleibt. Dies ist besonders nützlich für den Aufbau von Hochleistungs-Mappern oder Mathematik-Engines.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System.Linq.Expressions;public class FastMath{public static Func<int, int> CreateMultiplier(int factor){ParameterExpression input = Expression.Parameter(typeof(int), "n");BinaryExpression body = Expression.Multiply(input, Expression.Constant(factor));return Expression.Lambda<Func<int, int>>(body, input).Compile();}}// Usage:var doubleIt = FastMath.CreateMultiplier(2);int result = doubleIt(21); // 42
Erklärung
1
ParameterExpression input = Expression.Parameter(typeof(int), "n");
Definiert einen typisierten Parameter 'n', der an die generierte Funktion übergeben wird.
2
return Expression.Lambda<Func<int, int>>(body, input).Compile();
Kompiliert den Expression-Tree in einen Hochleistungs-Delegaten, der direkt ausgeführt werden kann.