假设我们有以下代码:
ExpressionHelper.GetRouteValuesFromExpression<AccountController>(ax => ax.MyAction("a", "b"));
从ASP.NET MVC Futures程序集中翻译:该方法相当快 - 在150毫秒内执行10,000次迭代。
现在,我们将代码更改为这个:
string a = "a";
string b = "b";
ExpressionHelper.GetRouteValuesFromExpression<AccountController>(ax => ax.MyAction(a, b));
这段代码将在15秒内执行1万次迭代。
问题是以下代码:
Expression<Func<object>> lambdaExpression = Expression.Lambda<Func<object>>(Expression.Convert(arg, typeof (object)));
Func<object> func = lambdaExpression.Compile();
value = func()
有没有比每次编译表达式更好的方法来获取表达式的值?这可能会极大地影响ASP.NET MVC链接生成速度。