我似乎我的頭撞到下面反射性能涉及
我明白,當在在LIB基礎上運行,不小心扔到風的反射可能是昂貴的。 How costly is .NET reflection?
但是說我有following,我打算在我的web API端點上使用它。像這樣:
public AnotherDto Get(int someId)
{
var item = this.repo.FindAll(o => o.Id == someId)
.Take(1).Map<SomeDto>()
.FirstOrDefault();
var result = this.otherRepo
.FindAll(o => o.Id == item.Id)
.Map<AnotherDto>();
return result;
}
凡地圖<>()
public static IEnumerable<U> Map<U>(this IEnumerable<object> e)
{
var method = typeof(EntityExtensions).GetMethods(BindingFlags.Static | BindingFlags.Public)
.Where(m => m.Name == "Map" && m.GetGenericArguments().Length == 2)
.Single();
method = method.MakeGenericMethod(e.GetType().GetGenericArguments()[0], typeof(U));
return method.Invoke(null, new object[] { e}) as IEnumerable<U>;
}
這是東西,將被視爲代碼,將敲背性能到這樣的程度,以保證不使用它?
你爲什麼不[測量](http://msdn.microsoft.com/cs-cz/library/system.diagnostics.stopwatch(v = vs.110).aspx)? – twoflower
這一切都取決於它被調用的頻率。對於這樣的事情,我通常傾向於像[AutoMapper](https://github.com/AutoMapper/AutoMapper)或[ValueInjecter](http://valueinjecter.codeplex.com/)之類的東西,或者如果你真的在追趕速度[EmitMapper](http://emitmapper.codeplex.com/)。 – James
好的建議。我一定會嘗試一下。這會被認爲是對此進行基準測試的有效方法嗎? –