Bir Expression<T>
derlendiğinde, sonuç kodu kod tarafından gizlice önbelleğe alınır mı? Çerçevenin, son birkaç ifadeyi dolaylı olarak derlediği ve önlediği statik Regex
yöntemlerinin çizgileri boyunca düşünüyorum. derlenmiş Expression<T>
nesneler değil önbelleğe değilsenizBir İfade <T> derlendiğinde, örtülü olarak önbelleğe alınmış mı?
, aşağıya derleme zamanı tutmak için bazı en iyi uygulamaları veya el bir ifade önbelleğe sorunlara neden olabilecek herhangi bir FRİKİKLERİNDEN tavsiye edebilir?
Bu örnektepublic MyResultType DoSomething(int arg1, int arg2)
{
var result = invokeHandler(
(IDoSomethingHandler h) => h.DoSomething(arg1, arg2)
);
return result;
}
private TResult invokeHandler<T, TResult>(Expression<Func<T, TResult>> action)
where T : class
{
// Here, I might want to check to see if action is already cached.
var compiledAction = action.Compile();
var methodCallExpr = action as MethodCallExpression;
// Here, I might want to store methodCallExpr in a cache somewhere.
var handler = ServiceLocator.Current.GetInstance<T>();
var result = compiledAction(handler);
return result;
}
, ben olsam bu değerleri almak yerine, ben derlenmiş ifadeyi önbelleğe eğer anda ifade derlendi gibi, bu arg1
ve arg2
değerlerini kullanacaktır o biraz endişeliyim Yığındaki uygun yerlerden (yani mevcut değerleri almak yerine).
Merhaba Mark, Bu tür optimizasyonlarla hiç karşılaşmadım. Bu işlemin, önceden derlenmiş sorguların önbelleğe alınması, perfomance açısından gerçekten yararlı olup olmadığını bildirir misiniz? –