Queue contient trop de données.
Bonjour,
J'ai un bout de code qui contient une Queue<Tuple<IPort, List<IPort>>>().
Au bout d'un certain temps, je me retrouve avec 2 millions d'items, ce qui sature la RAM.
Y aurait-il une possible optimisation ? Merci 8-)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
var m_Stacks = new Queue<Tuple<IPort, List<IPort>>>();
m_Stacks.Enqueue(new Tuple<IPort, List<IPort>>(starting, new List<IPort>()));
while (m_Stacks.Count > 0)
{
var args = m_Stacks.Dequeue();
var cursor = args.Item1;
var path = args.Item2;
if (dropIfAbsorbing && cursor.absorbing)
{
_cntAbs = _cntAbs + 1;
continue;
}
path.Add(cursor);
if (cursor.fum_activating || cursor.activating)
{
//combined = string.Join("^", path.Select(i=>i.owner.name.ToString()));
combined = string.Join("^", path.Select(i => i.ToString()));
if (!list_visit.Contains(combined))
{
list_visit.Add(combined);
yield return path;
}
}
foreach (var topPort in topPorts(cursor))
{
m_Stacks.Enqueue(
new Tuple<IPort, List<IPort>>(
topPort,
new List<IPort>(path)
)
);
} |