From: <rg...@us...> - 2007-08-10 07:40:29
|
Revision: 284 http://dacapobench.svn.sourceforge.net/dacapobench/?rev=284&view=rev Author: rgarner Date: 2007-08-10 00:40:21 -0700 (Fri, 10 Aug 2007) Log Message: ----------- Speed up and recalibrate the graphs Modified Paths: -------------- benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfData.java benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfHistoryQuery.java benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfRatioQuery.java benchmarks/tools/plotter-regression/src/org/dacapobench/regression/ReferenceTimes.java Modified: benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfData.java =================================================================== --- benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfData.java 2007-06-28 03:36:43 UTC (rev 283) +++ benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfData.java 2007-08-10 07:40:21 UTC (rev 284) @@ -11,9 +11,9 @@ import java.text.ParseException; import java.util.Date; +import edu.anu.thylacine.data.RawCSVFile; import edu.anu.thylacine.graph.Benchmark; import edu.anu.thylacine.graph.data.files.Parser; -import edu.anu.thylacine.graph.data.files.RawCSVFile; import edu.anu.thylacine.graph.data.files.TupleProvider; import edu.anu.thylacine.relational.Column; import edu.anu.thylacine.relational.Database; Modified: benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfHistoryQuery.java =================================================================== --- benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfHistoryQuery.java 2007-06-28 03:36:43 UTC (rev 283) +++ benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfHistoryQuery.java 2007-08-10 07:40:21 UTC (rev 284) @@ -34,7 +34,7 @@ */ public class PerfHistoryQuery implements Query { - protected final boolean PROFILE = false; + protected final boolean PROFILE = true; public static final Column<Double> ELAPSED = Database.newColumn("elapsed",Double.class); @@ -73,11 +73,9 @@ return new MyHashSet<String>("perf"); } - /* (non-Javadoc) - * @see edu.anu.thylacine.graph.graphs.Query#exec(edu.anu.thylacine.relational.ColumnValue[]) - * - */ - public Table exec(ColumnValue... bindings) throws NoDataException { + static Table processed = null; + + private Table preProcess() throws NoDataException { Table perf = Database.the.getTable("perf"); if (perf == null) Err.noData("perf"); @@ -102,9 +100,21 @@ if (PROFILE) System.out.printf("PerfHistoryQuery (%4.2f): insert 2nd iteration\n",elapsed(start)); result = result.union(raw.project(iter3Columns).join(iteration3).rename(iter3Map)); if (PROFILE) System.out.printf("PerfHistoryQuery (%4.2f): insert 3rd iteration\n",elapsed(start)); + return result; + } + + /* (non-Javadoc) + * @see edu.anu.thylacine.graph.graphs.Query#exec(edu.anu.thylacine.relational.ColumnValue[]) + * + */ + public Table exec(ColumnValue... bindings) throws NoDataException { + if (processed == null) { + processed = preProcess(); + } + long start = now(); if (PROFILE) System.out.printf("PerfHistoryQuery (%4.2f): renamed columns\n",elapsed(start)); - Table last = result.select(bindings); + Table last = processed.select(bindings); if (PROFILE) System.out.printf("PerfHistoryQuery (%4.2f): selected by bindings\n",elapsed(start)); return last; } Modified: benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfRatioQuery.java =================================================================== --- benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfRatioQuery.java 2007-06-28 03:36:43 UTC (rev 283) +++ benchmarks/tools/plotter-regression/src/org/dacapobench/regression/PerfRatioQuery.java 2007-08-10 07:40:21 UTC (rev 284) @@ -67,32 +67,36 @@ return new MyHashSet<String>("reference").union(super.baseTables()); } + private static Table finalResult = null; + /* (non-Javadoc) * @see edu.anu.thylacine.graph.graphs.Query#exec(edu.anu.thylacine.relational.ColumnValue[]) * */ public Table exec(ColumnValue... bindings) throws NoDataException { long start = now(); - Table perf = super.exec(); - if (PROFILE) System.out.printf("PerfRatioQuery (%4.2f): Super-query\n", elapsed(start)); - Table ref = Database.the.getTable("reference"); - - Table perfNorm = perf.join(ref).append(RATIO); - if (PROFILE) System.out.printf("PerfRatioQuery (%4.2f): append ratio\n", elapsed(start)); + if (finalResult == null) { + Table perf = super.exec(); - Table result = perfNorm.project(columns); - if (PROFILE) System.out.printf("PerfRatioQuery (%4.2f): project\n", elapsed(start)); + if (PROFILE) System.out.printf("PerfRatioQuery (%4.2f): Super-query\n", elapsed(start)); + Table ref = Database.the.getTable("reference"); - Table meanByJVM = result.aggregate( - new HashSet<Column>(Arrays.asList(PerfData.TIME,PerfData.JVM,Iterations.ITER)), // Group-by - new GeoMean<Double>(RATIO,MEAN)).join(meanBenchmark); - if (PROFILE) System.out.printf("PerfRatioQuery (%4.2f): aggregate and form means\n", elapsed(start)); + Table perfNorm = perf.join(ref).append(RATIO); + if (PROFILE) System.out.printf("PerfRatioQuery (%4.2f): append ratio\n", elapsed(start)); - Map<Column,Column> renames = new HashMap<Column,Column>(); - renames.put(MEAN,RATIO); - meanByJVM = meanByJVM.rename(renames).project(columns); + Table result = perfNorm.project(columns); + if (PROFILE) System.out.printf("PerfRatioQuery (%4.2f): project\n", elapsed(start)); - Table finalResult = result.union(meanByJVM); + Table meanByJVM = result.aggregate( + new HashSet<Column>(Arrays.asList(PerfData.TIME,PerfData.JVM,Iterations.ITER)), // Group-by + new GeoMean<Double>(RATIO,MEAN)).join(meanBenchmark); + if (PROFILE) System.out.printf("PerfRatioQuery (%4.2f): aggregate and form means\n", elapsed(start)); + + Map<Column,Column> renames = new HashMap<Column,Column>(); + renames.put(MEAN,RATIO); + meanByJVM = meanByJVM.rename(renames).project(columns); + finalResult = result.union(meanByJVM); + } return finalResult.select(bindings); } Modified: benchmarks/tools/plotter-regression/src/org/dacapobench/regression/ReferenceTimes.java =================================================================== --- benchmarks/tools/plotter-regression/src/org/dacapobench/regression/ReferenceTimes.java 2007-06-28 03:36:43 UTC (rev 283) +++ benchmarks/tools/plotter-regression/src/org/dacapobench/regression/ReferenceTimes.java 2007-08-10 07:40:21 UTC (rev 284) @@ -30,21 +30,22 @@ */ public static void createReferenceTable() { Table ref = Database.newTable(Database.BENCHMARK,time); - addScore(ref, "antlr", 2640); - addScore(ref, "bloat", 8576); - addScore(ref, "chart", 7813); - addScore(ref, "eclipse", 38913); - addScore(ref, "fop", 2609); - addScore(ref, "hsqldb", 4384); - addScore(ref, "jython", 5870); - addScore(ref, "luindex", 10556); - addScore(ref, "lusearch", 5493); + addScore(ref, "antlr", 2462); + addScore(ref, "bloat", 8124); + addScore(ref, "chart", 7756); + addScore(ref, "eclipse", 36346); + addScore(ref, "fop", 2408); + addScore(ref, "hsqldb", 3314); + addScore(ref, "jython", 5595); + addScore(ref, "luindex", 7608); + addScore(ref, "lusearch", 5279); addScore(ref, "pmd", 6302); - addScore(ref, "sunflow", 5026); + addScore(ref, "sunflow", 4928); addScore(ref, "xalan", 6070); Database.the.putTable("reference", ref); } + /** * @param ref * @param benchmark TODO This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |