Mercurial > hg > graal-jvmci-8
changeset 3137:7b805b65679f
IdealGraphVisualizer: use a LinkedHashSet instead of an ArrayList to store the edges of an InputGraph in order to slightly increase performance, particularly when parsing an input file
author | Peter Hofer <peter.hofer@jku.at> |
---|---|
date | Mon, 04 Jul 2011 11:28:08 +0200 |
parents | 2def3cad2e00 |
children | 47d03d774d20 |
files | src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/InputGraph.java |
diffstat | 1 files changed, 10 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/InputGraph.java Mon Jul 04 10:56:19 2011 +0200 +++ b/src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/InputGraph.java Mon Jul 04 11:28:08 2011 +0200 @@ -28,8 +28,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.Hashtable; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -40,11 +40,11 @@ */ public class InputGraph extends Properties.Entity { - private LinkedHashMap<Integer, InputNode> nodes; - private ArrayList<InputEdge> edges; + private Map<Integer, InputNode> nodes; + private Set<InputEdge> edges; private Group parent; - private LinkedHashMap<String, InputBlock> blocks; - private LinkedHashMap<Integer, InputBlock> nodeToBlock; + private Map<String, InputBlock> blocks; + private Map<Integer, InputBlock> nodeToBlock; private Pair<InputGraph, InputGraph> sourceGraphs; private int parentIndex; @@ -54,7 +54,7 @@ this.sourceGraphs = sourceGraphs; setName(name); nodes = new LinkedHashMap<Integer, InputNode>(); - edges = new ArrayList<InputEdge>(); + edges = new LinkedHashSet<InputEdge>(); blocks = new LinkedHashMap<String, InputBlock>(); nodeToBlock = new LinkedHashMap<Integer, InputBlock>(); } @@ -177,9 +177,6 @@ } noBlock.addNode(n.getId()); } - } - - for (InputNode n : this.getNodes()) { assert this.getBlock(n) != null; } } @@ -249,22 +246,19 @@ } public Collection<InputEdge> getEdges() { - return Collections.unmodifiableList(edges); + return Collections.unmodifiableSet(edges); } public void removeEdge(InputEdge c) { - assert edges.contains(c); - edges.remove(c); - assert !edges.contains(c); + boolean removed = edges.remove(c); + assert removed; } public void addEdge(InputEdge c) { - // Be tolerant with duplicated edges. - if(!edges.contains(c)) { + if (!edges.contains(c)) { edges.add(c); } - assert edges.contains(c); } public Group getGroup() {