Author: j16sdiz
Date: 2009-01-02 10:35:14 +0000 (Fri, 02 Jan 2009)
New Revision: 24879

Modified:
   trunk/plugins/XMLSpider/IndexWriter.java
Log:
benchmarking & debugging

Modified: trunk/plugins/XMLSpider/IndexWriter.java
===================================================================
--- trunk/plugins/XMLSpider/IndexWriter.java    2009-01-02 08:53:05 UTC (rev 
24878)
+++ trunk/plugins/XMLSpider/IndexWriter.java    2009-01-02 10:35:14 UTC (rev 
24879)
@@ -47,6 +47,7 @@
        private int match;
        private long time_taken;
        private boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
+       private boolean DEBUG = true;
 
        IndexWriter() {
        }
@@ -332,7 +333,7 @@
                        /* Starting to generate index */
                        xmlDoc = impl.createDocument(null, "sub_index", null);
                        rootElement = xmlDoc.getDocumentElement();
-                       if (logMINOR)
+                       if (DEBUG)
                                
rootElement.appendChild(xmlDoc.createComment(new Date().toGMTString()));
                        
                        /* Adding header to the index */
@@ -395,7 +396,7 @@
                                                }
                                        }
                                }
-                               if (logMINOR)
+                               if (DEBUG)
                                        
keywordsElement.appendChild(xmlDoc.createComment(term.getMD5()));
                                keywordsElement.appendChild(wordElement);
                        }
@@ -474,7 +475,7 @@
                        xmlDoc = impl.createDocument(null, "sub_index", null);
                        rootElement = xmlDoc.getDocumentElement();
 
-                       if (logMINOR)
+                       if (DEBUG)
                                
rootElement.appendChild(xmlDoc.createComment(new Date().toGMTString()));
 
                        /* Adding header to the index */
@@ -559,16 +560,50 @@
                db.open(arg[0]);
                PerstRoot root = (PerstRoot) db.getRoot();
                IndexWriter writer = new IndexWriter();
+               
+               int benchmark = 0;
+               long[] timeTaken = null;
+               if (arg[1] != null) {
+                       benchmark = Integer.parseInt(arg[1]);
+                       timeTaken = new long[benchmark];
+               }
+               
 
-               do {
+               for (int i = 0; i < benchmark; i++) {
                        long startTime = System.currentTimeMillis();
                        writer.makeIndex(root);
                        long endTime = System.currentTimeMillis();
                        long memFree = Runtime.getRuntime().freeMemory();
                        long memTotal = Runtime.getRuntime().totalMemory();
 
-                       System.out.println("Index generated in " + (endTime - 
startTime) + "ms. Used memory="
-                               + (memTotal - memFree));
-               } while ("BENCHMARK".equals(arg[1]));
+                       System.out.println("Index generated in " + (endTime - 
startTime) //
+                               + "ms. Used memory=" + (memTotal - memFree));
+
+                       if (benchmark > 0) {
+                               timeTaken[i] = (endTime - startTime);
+
+                               System.out.println("Cooling down.");
+                               for (int j = 0; j < 3; j++) {
+                                       System.gc();
+                                       System.runFinalization();
+                                       Thread.sleep(3000);
+                               }
+                       }
+               }
+
+               if (benchmark > 0) {
+                       long totalTime = 0;
+                       long totalSqTime = 0;
+                       for (long t : timeTaken) {
+                               totalTime += t;
+                               totalSqTime += t * t;
+                       }
+
+                       double meanTime = (totalTime / benchmark);
+                       double meanSqTime = (totalSqTime / benchmark);
+
+                       System.out.println("Mean time = " + (long) meanTime + 
"ms");
+                       System.out.println("       sd = " + (long) 
Math.sqrt(meanSqTime - meanTime * meanTime) + "ms");
+               }
        }
 }
\ No newline at end of file

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to