我在MVC应用程序上遇到了性能问题。我需要在运行时通过相应的字符串解析lambda表达式。当应用程序启动时,它运行得很快,但每次调用该方法时执行时间会越来越多。 CPU和RAM不会增加,但核心方法需要更多的时间。
当应用程序启动时,执行时间只有几毫秒。在多次调用它之后,执行时间变为10 ms,100 ms,依此类推。这是代码片段:
public static LambdaExpression ParseLambda(ParameterExpression[] parameters, Type resultType, string expression, params object[] values)
{
ExpressionParser parser = new ExpressionParser(parameters, expression, values);
var body = parser.Parse(resultType);
var lambdaExpression = Expression.Lambda(body, parameters); //this is the problematic call
return lambdaExpression ;
}
对Expression.Lambda(body, parameters)
的调用总是花费更多时间来完成。
重新启动应用程序后,该方法再次变得快速。
为了提高效率,我应该每小时或更频繁地重启应用程序。但由于很多原因,这是不可能的。
任何帮助都将不胜感激。