asterixdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ima...@apache.org
Subject [06/15] incubator-asterixdb git commit: Merge asterix-experiments to master
Date Wed, 16 Mar 2016 00:35:11 GMT
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/report/SIE4ReportBuilderRunner.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/report/SIE4ReportBuilderRunner.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/report/SIE4ReportBuilderRunner.java
new file mode 100644
index 0000000..2dfa23f
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/report/SIE4ReportBuilderRunner.java
@@ -0,0 +1,715 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.experiment.report;
+
+import java.io.BufferedReader;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class SIE4ReportBuilderRunner {
+    static boolean IS_PROFILE = false;
+    String outputFilePath = "/Users/kisskys/workspace/asterix_master/resultLog/MemBuf3g-DiskBuf3g-Lsev-Jvm7g-Lock0g/result-report/";
+    SIE3ReportBuilder sie4Dhbtree;
+    SIE3ReportBuilder sie4Dhvbtree;
+    SIE3ReportBuilder sie4Rtree;
+    SIE3ReportBuilder sie4Shbtree;
+    SIE3ReportBuilder sie4Sif;
+
+    //for profiling report -------------------------------------
+    String profileFileHomeDir;
+    String indexSearchTimeFilePath;
+    String falsePositiveFilePath;
+    String cacheMissFilePath;
+    ProfilerReportBuilder dhbtreeProfiler;
+    ProfilerReportBuilder dhvbtreeProfiler;
+    ProfilerReportBuilder rtreeProfiler;
+    ProfilerReportBuilder shbtreeProfiler;
+    ProfilerReportBuilder sifProfiler;
+    //for profiling report -------------------------------------
+
+    StringBuilder sb = new StringBuilder();
+
+    public SIE4ReportBuilderRunner() {
+        String expHomePath = "/Users/kisskys/workspace/asterix_master/resultLog/MemBuf3g-DiskBuf3g-Lsev-Jvm7g-Lock0g/exp4/";
+        String runLogFileName = "run-exp4.log";
+        String queryLogFileNamePrefix = "QueryGenResult-";
+        String queryLogFileNameSuffix = "-130.149.249.51.txt";
+
+        sie4Dhbtree = new SIE3ReportBuilder(expHomePath, "SpatialIndexExperiment4Dhbtree", runLogFileName,
+                queryLogFileNamePrefix + "SpatialIndexExperiment4Dhbtree" + queryLogFileNameSuffix);
+        sie4Dhvbtree = new SIE3ReportBuilder(expHomePath, "SpatialIndexExperiment4Dhvbtree", runLogFileName,
+                queryLogFileNamePrefix + "SpatialIndexExperiment4Dhvbtree" + queryLogFileNameSuffix);
+        sie4Rtree = new SIE3ReportBuilder(expHomePath, "SpatialIndexExperiment4Rtree", runLogFileName,
+                queryLogFileNamePrefix + "SpatialIndexExperiment4Rtree" + queryLogFileNameSuffix);
+        sie4Shbtree = new SIE3ReportBuilder(expHomePath, "SpatialIndexExperiment4Shbtree", runLogFileName,
+                queryLogFileNamePrefix + "SpatialIndexExperiment4Shbtree" + queryLogFileNameSuffix);
+        sie4Sif = new SIE3ReportBuilder(expHomePath, "SpatialIndexExperiment4Sif", runLogFileName,
+                queryLogFileNamePrefix + "SpatialIndexExperiment4Sif" + queryLogFileNameSuffix);
+    }
+
+    public void generateIndexCreationTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 index creation time report\n");
+        sb.append("index type, index creation time\n");
+        sb.append("dhbtree,").append(sie4Dhbtree.getIndexCreationTime()).append("\n");
+        sb.append("dhvbtree,").append(sie4Dhvbtree.getIndexCreationTime()).append("\n");
+        sb.append("rtree,").append(sie4Rtree.getIndexCreationTime()).append("\n");
+        sb.append("shbtree,").append(sie4Shbtree.getIndexCreationTime()).append("\n");
+        sb.append("sif,").append(sie4Sif.getIndexCreationTime()).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie4_index_creation_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateIndexSize() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 index size report\n");
+
+        sb.append("index type, index size\n");
+        sb.append("dhbtree,").append(sie4Dhbtree.getIndexSize("Tweets_idx_dhbtreeLocation/device_id")).append("\n");
+        sb.append("dhvbtree,").append(sie4Dhvbtree.getIndexSize("Tweets_idx_dhvbtreeLocation/device_id")).append("\n");
+        sb.append("rtree,").append(sie4Rtree.getIndexSize("Tweets_idx_rtreeLocation/device_id")).append("\n");
+        sb.append("shbtree,").append(sie4Shbtree.getIndexSize("Tweets_idx_shbtreeLocation/device_id")).append("\n");
+        sb.append("sif,").append(sie4Sif.getIndexSize("Tweets_idx_sifLocation/device_id")).append("\n");
+        sb.append("# pidx,").append(sie4Sif.getIndexSize("Tweets_idx_Tweets/device_id")).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie4_sidx_size.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryResponseTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 select query response time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(sie4Dhbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie4Rtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie4Shbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie4Sif.getSelectQueryResponseTime(0)).append("\n");
+        sb.append("0.0001,").append(sie4Dhbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie4Rtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie4Shbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie4Sif.getSelectQueryResponseTime(1)).append("\n");
+        sb.append("0.001,").append(sie4Dhbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie4Rtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie4Shbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie4Sif.getSelectQueryResponseTime(2)).append("\n");
+        sb.append("0.01,").append(sie4Dhbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie4Rtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie4Shbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie4Sif.getSelectQueryResponseTime(3)).append("\n");
+        sb.append("0.1,").append(sie4Dhbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie4Rtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie4Shbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie4Sif.getSelectQueryResponseTime(4)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_select_query_response_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryResultCount() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 select query result count report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(sie4Dhbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie4Rtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie4Shbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie4Sif.getSelectQueryResultCount(0)).append("\n");
+        sb.append("0.0001,").append(sie4Dhbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie4Rtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie4Shbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie4Sif.getSelectQueryResultCount(1)).append("\n");
+        sb.append("0.001,").append(sie4Dhbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie4Rtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie4Shbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie4Sif.getSelectQueryResultCount(2)).append("\n");
+        sb.append("0.01,").append(sie4Dhbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie4Rtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie4Shbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie4Sif.getSelectQueryResultCount(3)).append("\n");
+        sb.append("0.1,").append(sie4Dhbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie4Dhvbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie4Rtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie4Shbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie4Sif.getSelectQueryResultCount(4)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper
+                .openOutputFile(outputFilePath + "sie4_select_query_result_count.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryResponseTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query response time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(sie4Dhbtree.getJoinQueryResponseTime(0)).append(",")
+                .append(sie4Dhvbtree.getJoinQueryResponseTime(0)).append(",")
+                .append(sie4Rtree.getJoinQueryResponseTime(0)).append(",")
+                .append(sie4Shbtree.getJoinQueryResponseTime(0)).append(",")
+                .append(sie4Sif.getJoinQueryResponseTime(0)).append("\n");
+        sb.append("0.0001,").append(sie4Dhbtree.getJoinQueryResponseTime(1)).append(",")
+                .append(sie4Dhvbtree.getJoinQueryResponseTime(1)).append(",")
+                .append(sie4Rtree.getJoinQueryResponseTime(1)).append(",")
+                .append(sie4Shbtree.getJoinQueryResponseTime(1)).append(",")
+                .append(sie4Sif.getJoinQueryResponseTime(1)).append("\n");
+        sb.append("0.001,").append(sie4Dhbtree.getJoinQueryResponseTime(2)).append(",")
+                .append(sie4Dhvbtree.getJoinQueryResponseTime(2)).append(",")
+                .append(sie4Rtree.getJoinQueryResponseTime(2)).append(",")
+                .append(sie4Shbtree.getJoinQueryResponseTime(2)).append(",")
+                .append(sie4Sif.getJoinQueryResponseTime(2)).append("\n");
+        sb.append("0.01,").append(sie4Dhbtree.getJoinQueryResponseTime(3)).append(",")
+                .append(sie4Dhvbtree.getJoinQueryResponseTime(3)).append(",")
+                .append(sie4Rtree.getJoinQueryResponseTime(3)).append(",")
+                .append(sie4Shbtree.getJoinQueryResponseTime(3)).append(",")
+                .append(sie4Sif.getJoinQueryResponseTime(3)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie4_join_query_response_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryResultCount() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query result count report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(sie4Dhbtree.getJoinQueryResultCount(0)).append(",")
+                .append(sie4Dhvbtree.getJoinQueryResultCount(0)).append(",")
+                .append(sie4Rtree.getJoinQueryResultCount(0)).append(",")
+                .append(sie4Shbtree.getJoinQueryResultCount(0)).append(",").append(sie4Sif.getJoinQueryResultCount(0))
+                .append("\n");
+        sb.append("0.0001,").append(sie4Dhbtree.getJoinQueryResultCount(1)).append(",")
+                .append(sie4Dhvbtree.getJoinQueryResultCount(1)).append(",")
+                .append(sie4Rtree.getJoinQueryResultCount(1)).append(",")
+                .append(sie4Shbtree.getJoinQueryResultCount(1)).append(",").append(sie4Sif.getJoinQueryResultCount(1))
+                .append("\n");
+        sb.append("0.001,").append(sie4Dhbtree.getJoinQueryResultCount(2)).append(",")
+                .append(sie4Dhvbtree.getJoinQueryResultCount(2)).append(",")
+                .append(sie4Rtree.getJoinQueryResultCount(2)).append(",")
+                .append(sie4Shbtree.getJoinQueryResultCount(2)).append(",").append(sie4Sif.getJoinQueryResultCount(2))
+                .append("\n");
+        sb.append("0.01,").append(sie4Dhbtree.getJoinQueryResultCount(3)).append(",")
+                .append(sie4Dhvbtree.getJoinQueryResultCount(3)).append(",")
+                .append(sie4Rtree.getJoinQueryResultCount(3)).append(",")
+                .append(sie4Shbtree.getJoinQueryResultCount(3)).append(",").append(sie4Sif.getJoinQueryResultCount(3))
+                .append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie4_join_query_result_count.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryProfiledSidxSearchTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 select query profiled sidx search time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(true, false, 0, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 0, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 0, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 0, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 0, 0)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(true, false, 1, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 1, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 1, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 1, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 1, 0)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(true, false, 2, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 2, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 2, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 2, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 2, 0)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(true, false, 3, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 3, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 3, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 3, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 3, 0)).append("\n");
+        sb.append("0.1,").append(dhbtreeProfiler.getIdxNumber(true, false, 4, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 4, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 4, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 4, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 4, 0)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_select_query_profiled_sidx_search_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryProfiledPidxSearchTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 select query profiled pidx search time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(true, false, 0, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 0, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 0, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 0, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 0, 1)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(true, false, 1, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 1, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 1, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 1, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 1, 1)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(true, false, 2, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 2, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 2, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 2, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 2, 1)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(true, false, 3, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 3, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 3, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 3, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 3, 1)).append("\n");
+        sb.append("0.1,").append(dhbtreeProfiler.getIdxNumber(true, false, 4, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, false, 4, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, false, 4, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, false, 4, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, false, 4, 1)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_select_query_profiled_pidx_search_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryProfiledSidxSearchTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query profiled sidx search time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(true, true, 0, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 0, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 0, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 0, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 0, 1)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(true, true, 1, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 1, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 1, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 1, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 1, 1)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(true, true, 2, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 2, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 2, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 2, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 2, 1)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(true, true, 3, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 3, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 3, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 3, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 3, 1)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_join_query_profiled_sidx_search_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryProfiledPidxSearchTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query profiled pidx search time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(true, true, 0, 2)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 0, 2)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 0, 2)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 0, 2)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 0, 2)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(true, true, 1, 2)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 1, 2)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 1, 2)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 1, 2)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 1, 2)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(true, true, 2, 2)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 2, 2)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 2, 2)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 2, 2)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 2, 2)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(true, true, 3, 2)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 3, 2)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 3, 2)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 3, 2)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 3, 2)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_join_query_profiled_pidx_search_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryProfiledSeedPidxSearchTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query profiled query seed pidx search time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(true, true, 0, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 0, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 0, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 0, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 0, 0)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(true, true, 1, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 1, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 1, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 1, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 1, 0)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(true, true, 2, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 2, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 2, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 2, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 2, 0)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(true, true, 3, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(true, true, 3, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(true, true, 3, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(true, true, 3, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(true, true, 3, 0)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_join_query_profiled_seed_pidx_search_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryProfiledSidxCacheMiss() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 select query profiled sidx cache miss report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(false, false, 0, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 0, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 0, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 0, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 0, 0)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(false, false, 1, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 1, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 1, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 1, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 1, 0)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(false, false, 2, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 2, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 2, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 2, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 2, 0)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(false, false, 3, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 3, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 3, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 3, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 3, 0)).append("\n");
+        sb.append("0.1,").append(dhbtreeProfiler.getIdxNumber(false, false, 4, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 4, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 4, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 4, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 4, 0)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_select_query_profiled_sidx_cache_miss.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryProfiledPidxCacheMiss() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 select query profiled pidx cache miss report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(false, false, 0, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 0, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 0, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 0, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 0, 1)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(false, false, 1, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 1, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 1, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 1, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 1, 1)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(false, false, 2, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 2, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 2, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 2, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 2, 1)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(false, false, 3, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 3, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 3, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 3, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 3, 1)).append("\n");
+        sb.append("0.1,").append(dhbtreeProfiler.getIdxNumber(false, false, 4, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, false, 4, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, false, 4, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, false, 4, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, false, 4, 1)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_select_query_profiled_pidx_cache_miss.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryProfiledSidxCacheMiss() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query profiled sidx cache miss report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(false, true, 0, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 0, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 0, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 0, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 0, 1)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(false, true, 1, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 1, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 1, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 1, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 1, 1)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(false, true, 2, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 2, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 2, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 2, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 2, 1)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(false, true, 3, 1)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 3, 1)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 3, 1)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 3, 1)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 3, 1)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_join_query_profiled_sidx_cache_miss.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryProfiledPidxCacheMiss() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query profiled pidx cache miss report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(false, true, 0, 2)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 0, 2)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 0, 2)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 0, 2)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 0, 2)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(false, true, 1, 2)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 1, 2)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 1, 2)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 1, 2)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 1, 2)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(false, true, 2, 2)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 2, 2)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 2, 2)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 2, 2)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 2, 2)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(false, true, 3, 2)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 3, 2)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 3, 2)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 3, 2)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 3, 2)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_join_query_profiled_pidx_cache_miss.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryProfiledSeedPidxCacheMiss() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query profiled query seed pidx search time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getIdxNumber(false, true, 0, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 0, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 0, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 0, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 0, 0)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getIdxNumber(false, true, 1, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 1, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 1, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 1, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 1, 0)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getIdxNumber(false, true, 2, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 2, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 2, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 2, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 2, 0)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getIdxNumber(false, true, 3, 0)).append(",")
+                .append(dhvbtreeProfiler.getIdxNumber(false, true, 3, 0)).append(",")
+                .append(rtreeProfiler.getIdxNumber(false, true, 3, 0)).append(",")
+                .append(shbtreeProfiler.getIdxNumber(false, true, 3, 0)).append(",")
+                .append(sifProfiler.getIdxNumber(false, true, 3, 0)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_join_query_profiled_seed_pidx_cache_miss.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryProfiledFalsePositive() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 select query profiled false positive raw report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getFalsePositives(false, 0)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(false, 0)).append(",")
+                .append(rtreeProfiler.getFalsePositives(false, 0)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(false, 0)).append(",")
+                .append(sifProfiler.getFalsePositives(false, 0)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getFalsePositives(false, 1)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(false, 1)).append(",")
+                .append(rtreeProfiler.getFalsePositives(false, 1)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(false, 1)).append(",")
+                .append(sifProfiler.getFalsePositives(false, 1)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getFalsePositives(false, 2)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(false, 2)).append(",")
+                .append(rtreeProfiler.getFalsePositives(false, 2)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(false, 2)).append(",")
+                .append(sifProfiler.getFalsePositives(false, 2)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getFalsePositives(false, 3)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(false, 3)).append(",")
+                .append(rtreeProfiler.getFalsePositives(false, 3)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(false, 3)).append(",")
+                .append(sifProfiler.getFalsePositives(false, 3)).append("\n");
+        sb.append("0.1,").append(dhbtreeProfiler.getFalsePositives(false, 4)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(false, 4)).append(",")
+                .append(rtreeProfiler.getFalsePositives(false, 4)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(false, 4)).append(",")
+                .append(sifProfiler.getFalsePositives(false, 4)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_select_query_profiled_false_positive_raw.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+        generateFalsePositive(outputFilePath + "sie4_select_query_profiled_false_positive_raw.txt", outputFilePath
+                + "sie4_select_query_result_count.txt", outputFilePath
+                + "sie4_select_query_profiled_false_positive.txt", false);
+    }
+
+    private void generateFalsePositive(String falsePositveFile, String queryResultCountFile, String outputFile,
+            boolean isJoin) throws IOException {
+
+        String[] fps, rcs;
+        sb.setLength(0);
+
+        BufferedReader brFalsePositive = new BufferedReader(new FileReader(falsePositveFile));
+        BufferedReader brQueryResultCount = new BufferedReader(new FileReader(queryResultCountFile));
+
+        //discard two head lines
+        brFalsePositive.readLine();
+        brFalsePositive.readLine();
+        brQueryResultCount.readLine();
+        brQueryResultCount.readLine();
+
+        int radiusCount = isJoin ? 4 : 5;
+        int partitionCount = 24;
+        String[] radius = { "0.00001", "0.0001", "0.001", "0.01", "0.1" };
+
+        if (isJoin) {
+            sb.append("# sie4 join query profiled false positive report\n");
+        } else {
+            sb.append("# sie4 select query profiled false positive report\n");
+        }
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+
+        for (int i = 0; i < radiusCount; i++) {
+            fps = brFalsePositive.readLine().split(",");
+            rcs = brQueryResultCount.readLine().split(",");
+            //false positive count
+            sb.append(radius[i])
+                    .append(",")
+                    .append(((Double.parseDouble(fps[1]) * partitionCount) - Double.parseDouble(rcs[1]))
+                            / partitionCount)
+                    .append(",")
+                    .append(((Double.parseDouble(fps[2]) * partitionCount) - Double.parseDouble(rcs[2]))
+                            / partitionCount)
+                    .append(",")
+                    .append(((Double.parseDouble(fps[3]) * partitionCount) - Double.parseDouble(rcs[3]))
+                            / partitionCount)
+                    .append(",")
+                    .append(((Double.parseDouble(fps[4]) * partitionCount) - Double.parseDouble(rcs[4]))
+                            / partitionCount)
+                    .append(",")
+                    .append(((Double.parseDouble(fps[5]) * partitionCount) - Double.parseDouble(rcs[5]))
+                            / partitionCount).append("\n");
+            //false positive rate
+            //            sb.append(radius[i])
+            //            .append(",").append(((Double.parseDouble(fps[1]) * partitionCount) - Double.parseDouble(rcs[1]))/(Double.parseDouble(fps[1]) * partitionCount))
+            //            .append(",").append(((Double.parseDouble(fps[2]) * partitionCount) - Double.parseDouble(rcs[2]))/(Double.parseDouble(fps[2]) * partitionCount))
+            //            .append(",").append(((Double.parseDouble(fps[3]) * partitionCount) - Double.parseDouble(rcs[3]))/(Double.parseDouble(fps[3]) * partitionCount))
+            //            .append(",").append(((Double.parseDouble(fps[4]) * partitionCount) - Double.parseDouble(rcs[4]))/(Double.parseDouble(fps[4]) * partitionCount))
+            //            .append(",").append(((Double.parseDouble(fps[5]) * partitionCount) - Double.parseDouble(rcs[5]))/(Double.parseDouble(fps[5]) * partitionCount))
+            //            .append("\n");
+        }
+        brFalsePositive.close();
+        brQueryResultCount.close();
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFile);
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateJoinQueryProfiledFalsePositive() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie4 join query profiled false positive raw report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(dhbtreeProfiler.getFalsePositives(true, 0)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(true, 0)).append(",")
+                .append(rtreeProfiler.getFalsePositives(true, 0)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(true, 0)).append(",")
+                .append(sifProfiler.getFalsePositives(true, 0)).append("\n");
+        sb.append("0.0001,").append(dhbtreeProfiler.getFalsePositives(true, 1)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(true, 1)).append(",")
+                .append(rtreeProfiler.getFalsePositives(true, 1)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(true, 1)).append(",")
+                .append(sifProfiler.getFalsePositives(true, 1)).append("\n");
+        sb.append("0.001,").append(dhbtreeProfiler.getFalsePositives(true, 2)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(true, 2)).append(",")
+                .append(rtreeProfiler.getFalsePositives(true, 2)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(true, 2)).append(",")
+                .append(sifProfiler.getFalsePositives(true, 2)).append("\n");
+        sb.append("0.01,").append(dhbtreeProfiler.getFalsePositives(true, 3)).append(",")
+                .append(dhvbtreeProfiler.getFalsePositives(true, 3)).append(",")
+                .append(rtreeProfiler.getFalsePositives(true, 3)).append(",")
+                .append(shbtreeProfiler.getFalsePositives(true, 3)).append(",")
+                .append(sifProfiler.getFalsePositives(true, 3)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie4_join_query_profiled_false_positive_raw.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        generateFalsePositive(outputFilePath + "sie4_join_query_profiled_false_positive_raw.txt", outputFilePath
+                + "sie4_join_query_result_count.txt", outputFilePath + "sie4_join_query_profiled_false_positive.txt",
+                true);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/report/SIE5ReportBuilderRunner.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/report/SIE5ReportBuilderRunner.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/report/SIE5ReportBuilderRunner.java
new file mode 100644
index 0000000..2cd8588
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/report/SIE5ReportBuilderRunner.java
@@ -0,0 +1,459 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.experiment.report;
+
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+
+public class SIE5ReportBuilderRunner {
+    String expHomePath = "/Users/kisskys/workspace/asterix_master/resultLog/MemBuf3g-DiskBuf3g-Lsev-Jvm7g-Lock0g/exp5-4/";
+    String runLogFileName = "run-exp5-4.log";
+    String outputFilePath = "/Users/kisskys/workspace/asterix_master/resultLog/MemBuf3g-DiskBuf3g-Lsev-Jvm7g-Lock0g/result-report/";
+
+    SIE2ReportBuilder sie5Dhbtree = new SIE2ReportBuilder(expHomePath, "SpatialIndexExperiment5Dhbtree", runLogFileName);
+    SIE2ReportBuilder sie5Dhvbtree = new SIE2ReportBuilder(expHomePath, "SpatialIndexExperiment5Dhvbtree",
+            runLogFileName);
+    SIE2ReportBuilder sie5Rtree = new SIE2ReportBuilder(expHomePath, "SpatialIndexExperiment5Rtree", runLogFileName);
+    SIE2ReportBuilder sie5Shbtree = new SIE2ReportBuilder(expHomePath, "SpatialIndexExperiment5Shbtree", runLogFileName);
+    SIE2ReportBuilder sie5Sif = new SIE2ReportBuilder(expHomePath, "SpatialIndexExperiment5Sif", runLogFileName);
+
+    StringBuilder sb = new StringBuilder();
+
+    /**
+     * generate sie5_overall_insert_ps.txt
+     */
+    public void generateOverallInsertPS() throws Exception {
+        int targetRound = 721; //(3600 seconds / 5seconds) + 1
+
+        ArrayList<Long> ipsListDhbtree = new ArrayList<Long>();
+        ArrayList<Long> ipsListDhvbtree = new ArrayList<Long>();
+        ArrayList<Long> ipsListRtree = new ArrayList<Long>();
+        ArrayList<Long> ipsListShbtree = new ArrayList<Long>();
+        ArrayList<Long> ipsListSif = new ArrayList<Long>();
+        sie5Dhbtree.getAllNodesAccumulatedInsertPS(targetRound, ipsListDhbtree);
+        sie5Dhvbtree.getAllNodesAccumulatedInsertPS(targetRound, ipsListDhvbtree);
+        sie5Rtree.getAllNodesAccumulatedInsertPS(targetRound, ipsListRtree);
+        sie5Shbtree.getAllNodesAccumulatedInsertPS(targetRound, ipsListShbtree);
+        sie5Sif.getAllNodesAccumulatedInsertPS(targetRound, ipsListSif);
+
+        sb.setLength(0);
+        sb.append("# sie5 60min inserts per second report\n");
+        sb.append("index type, InsertPS\n");
+        sb.append("dhbtree,").append(ipsListDhbtree.get(targetRound - 1)).append("\n");
+        sb.append("dhvbtree,").append(ipsListDhvbtree.get(targetRound - 1)).append("\n");
+        sb.append("rtree,").append(ipsListRtree.get(targetRound - 1)).append("\n");
+        sb.append("shbtree,").append(ipsListShbtree.get(targetRound - 1)).append("\n");
+        sb.append("sif,").append(ipsListSif.get(targetRound - 1)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_overall_insert_ps.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        ipsListDhbtree.clear();
+        ipsListDhvbtree.clear();
+        ipsListRtree.clear();
+        ipsListShbtree.clear();
+        ipsListSif.clear();
+    }
+
+    /**
+     * generate sie5_accumulated_insert_ps.txt
+     */
+    public void generateAccumulatedInsertPS() throws Exception {
+        int targetRound = 721; //(3600 seconds / 5seconds) + 1
+        int roundInterval = 5;
+
+        ArrayList<Long> ipsListDhbtree = new ArrayList<Long>();
+        ArrayList<Long> ipsListDhvbtree = new ArrayList<Long>();
+        ArrayList<Long> ipsListRtree = new ArrayList<Long>();
+        ArrayList<Long> ipsListShbtree = new ArrayList<Long>();
+        ArrayList<Long> ipsListSif = new ArrayList<Long>();
+        sie5Dhbtree.getAllNodesAccumulatedInsertPS(targetRound, ipsListDhbtree);
+        sie5Dhvbtree.getAllNodesAccumulatedInsertPS(targetRound, ipsListDhvbtree);
+        sie5Rtree.getAllNodesAccumulatedInsertPS(targetRound, ipsListRtree);
+        sie5Shbtree.getAllNodesAccumulatedInsertPS(targetRound, ipsListShbtree);
+        sie5Sif.getAllNodesAccumulatedInsertPS(targetRound, ipsListSif);
+
+        sb.setLength(0);
+        sb.append("# sie5 accumulated inserts per second report\n");
+        sb.append("# time, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+
+        for (int i = 0; i < targetRound; i++) {
+            sb.append("" + (i * roundInterval) + "," + ipsListDhbtree.get(i) + "," + ipsListDhvbtree.get(i) + ","
+                    + ipsListRtree.get(i) + "," + ipsListShbtree.get(i) + "," + ipsListSif.get(i) + "\n");
+        }
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_accumulated_insert_ps.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        ipsListDhbtree.clear();
+        ipsListDhvbtree.clear();
+        ipsListRtree.clear();
+        ipsListShbtree.clear();
+        ipsListSif.clear();
+    }
+
+    public void generateQueryPS() throws Exception {
+        int minutes = 60;
+        sb.setLength(0);
+        sb.append("# sie5 queries per second report\n");
+        sb.append("index type, QueryPS\n");
+        sb.append("dhbtree,").append(sie5Dhbtree.getQueryPS(minutes)).append("\n");
+        sb.append("dhvbtree,").append(sie5Dhvbtree.getQueryPS(minutes)).append("\n");
+        sb.append("rtree,").append(sie5Rtree.getQueryPS(minutes)).append("\n");
+        sb.append("shbtree,").append(sie5Shbtree.getQueryPS(minutes)).append("\n");
+        sb.append("sif,").append(sie5Sif.getQueryPS(minutes)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_query_ps.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateAverageQueryResultCount() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie5 average query result count report\n");
+        sb.append("index type, query result count\n");
+        sb.append("dhbtree,").append(sie5Dhbtree.getAverageQueryResultCount()).append("\n");
+        sb.append("dhvbtree,").append(sie5Dhvbtree.getAverageQueryResultCount()).append("\n");
+        sb.append("rtree,").append(sie5Rtree.getAverageQueryResultCount()).append("\n");
+        sb.append("shbtree,").append(sie5Shbtree.getAverageQueryResultCount()).append("\n");
+        sb.append("sif,").append(sie5Sif.getAverageQueryResultCount()).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie5_average_query_result_count.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateAverageQueryResponseTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie5 average query response time report\n");
+        sb.append("index type, query response time\n");
+        sb.append("dhbtree,").append(sie5Dhbtree.getAverageQueryResponseTime()).append("\n");
+        sb.append("dhvbtree,").append(sie5Dhvbtree.getAverageQueryResponseTime()).append("\n");
+        sb.append("rtree,").append(sie5Rtree.getAverageQueryResponseTime()).append("\n");
+        sb.append("shbtree,").append(sie5Shbtree.getAverageQueryResponseTime()).append("\n");
+        sb.append("sif,").append(sie5Sif.getAverageQueryResponseTime()).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie5_average_query_response_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateInstantaneousInsertPS() throws Exception {
+        for (int i = 0; i < 8; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 instantaneous inserts per second report\n");
+            sb.append(sie5Dhbtree.getInstantaneousInsertPS(i, false));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_instantaneous_insert_ps_dhbtree_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+        for (int i = 0; i < 8; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 instantaneous inserts per second report\n");
+            sb.append(sie5Dhvbtree.getInstantaneousInsertPS(i, false));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_instantaneous_insert_ps_dhvbtree_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+        for (int i = 0; i < 8; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 instantaneous inserts per second report\n");
+            sb.append(sie5Rtree.getInstantaneousInsertPS(i, false));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_instantaneous_insert_ps_rtree_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+        for (int i = 0; i < 8; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 instantaneous inserts per second report\n");
+            sb.append(sie5Shbtree.getInstantaneousInsertPS(i, false));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_instantaneous_insert_ps_shbtree_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+        for (int i = 0; i < 8; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 instantaneous inserts per second report\n");
+            sb.append(sie5Sif.getInstantaneousInsertPS(i, false));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_instantaneous_insert_ps_sif_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+    }
+
+    public void generateGanttInstantaneousInsertPS() throws Exception {
+        for (int i = 0; i < 1; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 8nodes(8 dataGen) instantaneous inserts per second report\n");
+            sb.append(sie5Dhbtree.getInstantaneousInsertPS(i, true));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_gantt_1node_instantaneous_insert_ps_dhbtree_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+        for (int i = 0; i < 1; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 8nodes(8 dataGen) instantaneous inserts per second report\n");
+            sb.append(sie5Dhvbtree.getInstantaneousInsertPS(i, true));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_gantt_1node_instantaneous_insert_ps_dhvbtree_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+        for (int i = 0; i < 1; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 8nodes(8 dataGen) instantaneous inserts per second report\n");
+            sb.append(sie5Rtree.getInstantaneousInsertPS(i, true));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_gantt_1node_instantaneous_insert_ps_rtree_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+        for (int i = 0; i < 1; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 8nodes(8 dataGen) instantaneous inserts per second report\n");
+            sb.append(sie5Shbtree.getInstantaneousInsertPS(i, true));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_gantt_1node_instantaneous_insert_ps_shbtree_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+        for (int i = 0; i < 1; i++) {
+            sb.setLength(0);
+            sb.append("# sie5 8nodes(8 dataGen) instantaneous inserts per second report\n");
+            sb.append(sie5Sif.getInstantaneousInsertPS(i, true));
+            FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                    + "sie5_gantt_1node_instantaneous_insert_ps_sif_gen" + i + ".txt");
+            fos.write(sb.toString().getBytes());
+            ReportBuilderHelper.closeOutputFile(fos);
+        }
+
+        long dataGenStartTime = sie5Dhbtree.getDataGenStartTimeStamp();
+        NCLogReportBuilder ncLogReportBuilder = new NCLogReportBuilder(expHomePath
+                + "SpatialIndexExperiment5Dhbtree/logs/a1_node1.log");
+        sb.setLength(0);
+        sb.append(ncLogReportBuilder.getFlushMergeEventAsGanttChartFormat(dataGenStartTime));
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie5_gantt_1node_flush_merge_dhbtree.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        dataGenStartTime = sie5Dhvbtree.getDataGenStartTimeStamp();
+        ncLogReportBuilder = new NCLogReportBuilder(expHomePath + "SpatialIndexExperiment5Dhvbtree/logs/a1_node1.log");
+        sb.setLength(0);
+        sb.append(ncLogReportBuilder.getFlushMergeEventAsGanttChartFormat(dataGenStartTime));
+        fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_gantt_1node_flush_merge_dhvbtree.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        dataGenStartTime = sie5Rtree.getDataGenStartTimeStamp();
+        ncLogReportBuilder = new NCLogReportBuilder(expHomePath + "SpatialIndexExperiment5Rtree/logs/a1_node1.log");
+        sb.setLength(0);
+        sb.append(ncLogReportBuilder.getFlushMergeEventAsGanttChartFormat(dataGenStartTime));
+        fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_gantt_1node_flush_merge_rtree.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        dataGenStartTime = sie5Shbtree.getDataGenStartTimeStamp();
+        ncLogReportBuilder = new NCLogReportBuilder(expHomePath + "SpatialIndexExperiment5Shbtree/logs/a1_node1.log");
+        sb.setLength(0);
+        sb.append(ncLogReportBuilder.getFlushMergeEventAsGanttChartFormat(dataGenStartTime));
+        fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_gantt_1node_flush_merge_shbtree.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        dataGenStartTime = sie5Sif.getDataGenStartTimeStamp();
+        ncLogReportBuilder = new NCLogReportBuilder(expHomePath + "SpatialIndexExperiment5Sif/logs/a1_node1.log");
+        sb.setLength(0);
+        sb.append(ncLogReportBuilder.getFlushMergeEventAsGanttChartFormat(dataGenStartTime));
+        fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_gantt_1node_flush_merge_sif.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryResponseTime() throws Exception {
+        sb.setLength(0);
+        sb.append("# sie5 select query response time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(sie5Dhbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(0)).append("\n");
+        sb.append("0.0001,").append(sie5Dhbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(1)).append("\n");
+        sb.append("0.001,").append(sie5Dhbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(2)).append("\n");
+        sb.append("0.01,").append(sie5Dhbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(3)).append("\n");
+        sb.append("0.1,").append(sie5Dhbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(4)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper.openOutputFile(outputFilePath
+                + "sie5_select_query_response_time.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        sb.setLength(0);
+        sb.append("# sie5 select query response time report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(sie5Dhbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(0)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(0)).append("\n");
+        sb.append("0.0001,").append(sie5Dhbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(1)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(1)).append("\n");
+        sb.append("0.001,").append(sie5Dhbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(2)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(2)).append("\n");
+
+        fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_select_query_response_time1.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        sb.setLength(0);
+        sb.append("# sie5 select query response time 2 report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.01,").append(sie5Dhbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(3)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(3)).append("\n");
+        sb.append("0.1,").append(sie5Dhbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie5Rtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie5Shbtree.getSelectQueryResponseTime(4)).append(",")
+                .append(sie5Sif.getSelectQueryResponseTime(4)).append("\n");
+
+        fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_select_query_response_time2.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+
+    public void generateSelectQueryResultCount() throws Exception {
+
+        sb.setLength(0);
+        sb.append("# sie5 select query result count report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(sie5Dhbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(0)).append("\n");
+        sb.append("0.0001,").append(sie5Dhbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(1)).append("\n");
+        sb.append("0.001,").append(sie5Dhbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(2)).append("\n");
+        sb.append("0.01,").append(sie5Dhbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(3)).append("\n");
+        sb.append("0.1,").append(sie5Dhbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(4)).append("\n");
+
+        FileOutputStream fos = ReportBuilderHelper
+                .openOutputFile(outputFilePath + "sie5_select_query_result_count.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        sb.setLength(0);
+        sb.append("# sie5 select query result count 1 report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.00001,").append(sie5Dhbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(0)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(0)).append("\n");
+        sb.append("0.0001,").append(sie5Dhbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(1)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(1)).append("\n");
+        sb.append("0.001,").append(sie5Dhbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(2)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(2)).append("\n");
+
+        fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_select_query_result_count1.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+
+        sb.setLength(0);
+        sb.append("# sie5 select query result count 2 report\n");
+
+        sb.append("radius, dhbtree, dhvbtree, rtree, shbtree, sif\n");
+        sb.append("0.01,").append(sie5Dhbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(3)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(3)).append("\n");
+        sb.append("0.1,").append(sie5Dhbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie5Dhvbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie5Rtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie5Shbtree.getSelectQueryResultCount(4)).append(",")
+                .append(sie5Sif.getSelectQueryResultCount(4)).append("\n");
+
+        fos = ReportBuilderHelper.openOutputFile(outputFilePath + "sie5_select_query_result_count2.txt");
+        fos.write(sb.toString().getBytes());
+        ReportBuilderHelper.closeOutputFile(fos);
+    }
+}


Mime
View raw message