次のコードがあるとします。
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秒で 10,000 回の反復を実行します。
問題は次のコードです。
Expression<Func<object>> lambdaExpression = Expression.Lambda<Func<object>>(Expression.Convert(arg, typeof (object)));
Func<object> func = lambdaExpression.Compile();
value = func()
式を毎回コンパイルするよりも、式から値を取得するためのより良い方法はありますか? これは、ASP.NET MVC リンクの生成速度に大きく影響する可能性があります。