Vous avez une question sur la façon de mieux optimiser ou accélérer les choses. À l'heure actuelle mon code semble fonctionner un peu lent ...C# .net décorateur modèle convertir/mise en collection
Je les classes suivantes
public class DataFoo : IFoo { }
public class Foo
{
internal IFoo UnderlyingDataObject{get;set;}
public Foo(IFoo f)
{
UnderlyingDataObject = f;
}
}
Maintenant, dans bien des cas, je finis par avoir besoin ou appeler une méthode qui fournira de nouveau une liste. Cette méthode sera d'abord obtenir un tableau d'objets DataFoo et tous les objets itérer retournés instancier un nouvel objet Foo passant dans le DataFoo ... Voici un exemple ...
public List<Foo> GetListOfFoo(Guid id)
{
DataFoo[] q = GetArrayOfDataFoo(id);
List<Foo> rv = new List<Foo>();
for(var i = 0; i < q.Length; i++)
{
rv.Add(new Foo(q[i]));
}
return rv;
}
Le problème est que d'avoir à itérer sur et instancier comme ça semble assez lent. J'étais curieux de savoir si quelqu'un pourrait avoir des suggestions sur la façon d'accélérer cela ...
Avez-vous profils votre code pour vérifier que a) il est lent et b) ce code est le goulot d'étranglement? – ChrisF
je convertis le code d'une implémentation linq en sql existante à cette approche en utilisant nhibernate/fluent nhibernate ... d'après ce que je vois en comparant les deux versions; le nouveau code est plus lent. qui est plus lent soit parce que nhibernate a été introduit ou à cause de toutes les boucles for qui se produisent ... – Jason
Utilisez un profileur pour vérifier les goulets d'étranglement de performance - pas de devinettes; ils sont rarement là où vous vous attendez. Je m'attendrais à ce que le changement de fournisseur ORM soit beaucoup plus important que la performance en boucle. –