QuickGraph.Heap.GcTypeHeap.Merge C# (CSharp) Méthode

Merge() public méthode

public Merge ( int minimumSize ) : GcTypeHeap
minimumSize int
Résultat GcTypeHeap
        public GcTypeHeap Merge(int minimumSize)
        {
            var minimumSizeBytes = minimumSize * 1000;
            Console.WriteLine("merging type nodes smaller than {0}kb", minimumSize);
            var merged = new BidirectionalGraph<GcType,MergedEdge<GcType,GcTypeEdge>>(false, this.graph.VertexCount);
            var merger = new EdgeMergeCondensationGraphAlgorithm<GcType, GcTypeEdge>(
                this.graph,
                merged,
                delegate(GcType type)
                {
                    return type.Size >= minimumSizeBytes;
                });
            merger.Compute();
            var clone = new BidirectionalGraph<GcType, GcTypeEdge>(
                false,
                merged.VertexCount);
            foreach (var type in merged.Vertices)
                clone.AddVertex(type);
            foreach (var medge in merged.Edges)
            {
                GcTypeEdge edge = new GcTypeEdge(medge.Source, medge.Target);
                foreach (GcTypeEdge e in medge.Edges)
                    edge.Count += e.Count;
                clone.AddEdge(edge);
            }

            Console.WriteLine("resulting {0} types, {1} edges", clone.VertexCount, clone.EdgeCount);
            return new GcTypeHeap(clone);
        }
        #endregion