From f7c788d2c450aeb5b23e6c97912b74cf2cc01cee Mon Sep 17 00:00:00 2001 From: Nikolaus Krismer <nikolaus.krismer@uibk.ac.at> Date: Tue, 26 Aug 2014 12:33:33 +0200 Subject: [PATCH] added precaching for placeholder preparation --- .../java/it/unibz/inf/isochrone/db/Database.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/it/unibz/inf/isochrone/db/Database.java b/src/main/java/it/unibz/inf/isochrone/db/Database.java index 697909fe..201f307b 100644 --- a/src/main/java/it/unibz/inf/isochrone/db/Database.java +++ b/src/main/java/it/unibz/inf/isochrone/db/Database.java @@ -42,6 +42,7 @@ import java.util.Set; * @version 2.2 */ public class Database { + private static final String[] PRECACHED_PLACEHOLDERS; protected static final byte NW_MODE_CONTINUOUS = 0; protected static final byte NW_MODE_DISCRETE = 1; private final String queryEarliestArrivalTimeHomo; @@ -67,6 +68,16 @@ public class Database { protected Mode mode; protected boolean isIncoming; + // Static block + + static { + final int preachingLength = 10; + PRECACHED_PLACEHOLDERS = new String[preachingLength]; + for (int i = 0; i < preachingLength; ++i) { + PRECACHED_PLACEHOLDERS[i] = preparePlaceHolders(i); + } + } + // Constructor public Database(final ConfigDataset config, final Mode mode, final Direction direction) { @@ -84,7 +95,7 @@ public class Database { + " WHERE SOURCE = ? AND TARGET = ? AND ROUTE_ID IN (%S) AND (TIME_D BETWEEN ? AND ?) AND SERVICE_ID IN (%S) AND TIME_A <= ?"; queryLatestDepartureTimeHomo = "SELECT TIME_D, TIME_A, ROUTE_ID FROM " + configSchedule - + " WHERE SOURCE = ? AND TARGET = ? AND ROUTE_ID IN (%S) AND (TIME_A BETWEEN ? AND ?) AND SERVICE_ID IN (%S) AND TIME_D >= ?"; + + " WHERE SOURCE = ? AND TARGET = ? AND ROUTE_ID IN (%S) AND (TIME_A BETWEEN ? AND ?) AND SERVICE_ID IN (%S) AND TIME_D >= ?"; queryGetAllEdges = "SELECT ID, SOURCE, TARGET, LENGTH, EDGE_MODE, ROUTE_ID FROM " + configEdges; @@ -742,6 +753,9 @@ public class Database { if (length <= 0) { return ""; } + if (length < PRECACHED_PLACEHOLDERS.length) { + return PRECACHED_PLACEHOLDERS[length]; + } final StringBuilder builder = new StringBuilder((2 * length) - 1); builder.append("?"); -- GitLab