Added more detailed timing information when the timing option is specified.
Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/e6b5ac22 Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/e6b5ac22 Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/e6b5ac22 Branch: refs/heads/westmann/prettyprint Commit: e6b5ac22b7ce97052a197b64deeff066a070f0c3 Parents: 4a81445 Author: Preston Carman <[email protected]> Authored: Thu Feb 13 09:46:15 2014 -0800 Committer: Preston Carman <[email protected]> Committed: Thu Feb 13 09:46:15 2014 -0800 ---------------------------------------------------------------------- .../java/org/apache/vxquery/cli/VXQuery.java | 43 ++++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/e6b5ac22/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java ---------------------------------------------------------------------- diff --git a/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java index 537b990..06deac5 100644 --- a/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java +++ b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java @@ -78,6 +78,9 @@ public class VXQuery { private IHyracksDataset hds; private ResultSetId resultSetId; + private static List<String> timing; + private static int totalTiming; + private static String message; /** * Constructor to use command line options passed. @@ -87,6 +90,7 @@ public class VXQuery { */ public VXQuery(CmdLineOptions opts) { this.opts = opts; + timing = new ArrayList<String>(); } /** @@ -116,7 +120,18 @@ public class VXQuery { Date end = new Date(); // if -timing argument passed, show the starting and ending times if (opts.timing) { - System.out.println("Execution time: " + (end.getTime() - start.getTime()) + "ms"); + message = "Execution time: " + (end.getTime() - start.getTime()) + "ms"; + System.out.println(message); + timing.add(message); + if (opts.repeatExec > 3) { + message = "Average execution time: " + (totalTiming / (opts.repeatExec - 3)) + "ms"; + System.out.println(message); + timing.add(message); + } + System.out.println("Timing Summary:"); + for (String time : timing) { + System.out.println(" " + time); + } } } @@ -154,6 +169,8 @@ public class VXQuery { * @throws Exception */ private void runQueries() throws IOException, SystemException, Exception { + Date start; + Date end; for (String query : opts.arguments) { String qStr = slurp(query); if (opts.showQuery) { @@ -216,11 +233,12 @@ public class VXQuery { System.err.println(new XStream(new DomDriver()).toXML(moduleNode)); } } - + private StringBuilder appendPrettyPlan(StringBuilder sb, Module module) { try { StaticContext ctx = module.getCompilerControlBlock().getStaticContext(); - ILogicalExpressionVisitor<String, Integer> ev = new VXQueryLogicalExpressionPrettyPrintVisitor(ctx); + ILogicalExpressionVisitor<String, Integer> ev = new VXQueryLogicalExpressionPrettyPrintVisitor( + ctx); LogicalOperatorPrettyPrintVisitor v = new LogicalOperatorPrettyPrintVisitor(ev); PlanPrettyPrinter.printPlan(module.getBody(), sb, v, 0); } catch (AlgebricksException e) { @@ -230,11 +248,19 @@ public class VXQuery { } }; + start = new Date(); XMLQueryCompiler compiler = new XMLQueryCompiler(listener, getNodeList(), opts.frameSize); resultSetId = createResultSetId(); CompilerControlBlock ccb = new CompilerControlBlock(new StaticContextImpl(RootStaticContextImpl.INSTANCE), resultSetId); compiler.compile(query, new StringReader(qStr), ccb, opts.optimizationLevel); + end = new Date(); + // if -timing argument passed, show the starting and ending times + if (opts.timing) { + message = "Compile time: " + (end.getTime() - start.getTime()) + "ms"; + System.out.println(message); + timing.add(message); + } if (opts.compileOnly) { continue; } @@ -248,7 +274,18 @@ public class VXQuery { PrintWriter writer = new PrintWriter(System.out, true); // Repeat execution for number of times provided in -repeatexec argument for (int i = 0; i < opts.repeatExec; ++i) { + start = new Date(); runJob(js, writer); + end = new Date(); + // if -timing argument passed, show the starting and ending times + if (opts.timing) { + if ((i + 1) > 3) { + totalTiming += end.getTime() - start.getTime(); + } + message = "Job (" + (i + 1) + ") execution time: " + (end.getTime() - start.getTime()) + "ms"; + System.out.println(message); + timing.add(message); + } } } }
