Lorsque je dois obtenir des Go de données, les enregistrer sur une collection et les traiter, j'ai des débordements de mémoire. Ainsi, au lieu de:Quelle est la meilleure façon d'améliorer l'utilisation de la mémoire lorsque vous collectez un grand ensemble de données avant de le traiter? (.NET)
public class Program
{
public IEnumerable<SomeClass> GetObjects()
{
var list = new List<SomeClass>();
while(// get implementation
list.Add(object);
}
return list;
}
public void ProcessObjects(IEnumerable<SomeClass> objects)
{
foreach(var object in objects)
// process implementation
}
void Main()
{
var objects = GetObjects();
ProcessObjects(objects);
}
}
J'ai besoin de:
public class Program
{
void ProcessObject(SomeClass object)
{
// process implementation
}
public void GetAndProcessObjects()
{
var list = new List<SomeClass>();
while(// get implementation
Process(object);
}
return list;
}
void Main()
{
var objects = GetAndProcessObjects();
}
}
Il y a une meilleure façon?
Quel type de données est-il une table de base de données, un fichier ascii, un fichier xml? – tuinstoel
Vous devez être capable de raisonner sur l'ensemble en une fois, c'est-à-dire, pouvez-vous obtenir un petit morceau, traiter un petit morceau et ensuite répéter au lieu d'avoir tout en mémoire à une fois? –
Appuyant la question de JP, avez-vous besoin de la liste < > dans le deuxième échantillon? –