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


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
                        )
                    );
                }