Author: nextgens Date: 2007-02-28 17:25:08 +0000 (Wed, 28 Feb 2007) New Revision: 11927
Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java trunk/freenet/src/freenet/node/LocationManager.java trunk/freenet/src/freenet/node/Node.java Log: Small performance optimization: use a LinkedHashMap insteed of a HashMap to keep track of known locations. It's slightly slower but will speed up the displaying of the StatisticalToadlet (where we iterate a LOT). Recommended reading : http://www.javaranch.com/newsletter/Aug2002/newsletteraug2002.jsp ;) Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java =================================================================== --- trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java 2007-02-28 15:50:58 UTC (rev 11926) +++ trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java 2007-02-28 17:25:08 UTC (rev 11927) @@ -7,8 +7,8 @@ import java.text.NumberFormat; import java.util.Arrays; import java.util.Comparator; -import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.Locale; import java.util.Map; @@ -599,7 +599,7 @@ nodeCircleInfoboxContent.addChild("span", new String[] { "style", "class" }, new String[] { generatePeerCircleStyleString(0.875, false, 1.0), "mark" }, "+"); nodeCircleInfoboxContent.addChild("span", new String[] { "style", "class" }, new String[] { generatePeerCircleStyleString(0.875, false, 1.0), "mark" }, "+"); nodeCircleInfoboxContent.addChild("span", new String[] { "style", "class" }, new String[] { "position: absolute; top: " + PEER_CIRCLE_RADIUS + "px; left: " + (PEER_CIRCLE_RADIUS + PEER_CIRCLE_ADDITIONAL_FREE_SPACE) + "px", "mark" }, "+"); - HashMap knownLocsCopy = node.getKnownLocations(-1); + LinkedHashMap knownLocsCopy = node.getKnownLocations(-1); Double location = new Double(0.0); Long locationTime = new Long(0); double strength = 1.0; Modified: trunk/freenet/src/freenet/node/LocationManager.java =================================================================== --- trunk/freenet/src/freenet/node/LocationManager.java 2007-02-28 15:50:58 UTC (rev 11926) +++ trunk/freenet/src/freenet/node/LocationManager.java 2007-02-28 17:25:08 UTC (rev 11927) @@ -5,8 +5,8 @@ import java.security.MessageDigest; import java.util.Enumeration; -import java.util.HashMap; import java.util.Hashtable; +import java.util.LinkedHashMap; import java.util.Vector; import java.util.Date; import java.util.Iterator; @@ -1022,7 +1022,7 @@ recentlyForwardedIDs.remove(new Long(item.outgoingID)); } - private final HashMap knownLocs = new HashMap(); + private final LinkedHashMap knownLocs = new LinkedHashMap(); void registerLocationLink(double d, double t) { if(logMINOR) Logger.minor(this, "Known Link: "+d+ ' ' +t); @@ -1065,9 +1065,9 @@ } // Return a copy of the known locations HashMap for a given timestamp - public HashMap getKnownLocations(long timestamp) { + public LinkedHashMap getKnownLocations(long timestamp) { if (timestamp > -1) { - HashMap knownLocsCopy = new HashMap(); + LinkedHashMap knownLocsCopy = new LinkedHashMap(); //TODO optimize some more if it is to be called a lot. Double location = new Double(0.0); Long locationTime = new Long(0); @@ -1085,6 +1085,6 @@ } return knownLocsCopy; } - return new HashMap( knownLocs ); + return new LinkedHashMap( knownLocs ); } } Modified: trunk/freenet/src/freenet/node/Node.java =================================================================== --- trunk/freenet/src/freenet/node/Node.java 2007-02-28 15:50:58 UTC (rev 11926) +++ trunk/freenet/src/freenet/node/Node.java 2007-02-28 17:25:08 UTC (rev 11927) @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.zip.DeflaterOutputStream; import org.tanukisoftware.wrapper.WrapperManager; @@ -3228,7 +3229,7 @@ return lm.getNetworkSizeEstimate( timestamp ); } - public HashMap getKnownLocations(long timestamp) { + public LinkedHashMap getKnownLocations(long timestamp) { return lm.getKnownLocations( timestamp ); }
