From 8d80b5041dc3b82cedb8ef2ec27b19407be06206 Mon Sep 17 00:00:00 2001 From: vchirikov Date: Sun, 23 Feb 2020 02:19:34 +0300 Subject: [PATCH] Improve Expression.Lambda performance Unnecessary cache call in Expression.Lambda (with reflection in worst scenario) has been removed. Fix #32767 --- .../src/System/Linq/Expressions/LambdaExpression.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs b/src/libraries/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs index 0d60e3236e09b3..0e1ead78c1cb9c 100644 --- a/src/libraries/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs +++ b/src/libraries/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs @@ -687,7 +687,11 @@ public static Expression Lambda(Expression body, string? n { ReadOnlyCollection parameterList = parameters.ToReadOnly(); ValidateLambdaArgs(typeof(TDelegate), ref body, parameterList, nameof(TDelegate)); - return (Expression)CreateLambda(typeof(TDelegate), body, name, tailCall, parameterList); +#if FEATURE_COMPILE + return Expression.Create(body, name, tailCall, parameterList); +#else + return ExpressionCreator.CreateExpressionFunc(body, name, tailCall, parameterList); +#endif } ///