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 );
        }



Reply via email to