From fbaa6fa18546ef07efd32451c3b798ab681ff8bb Mon Sep 17 00:00:00 2001 From: dbrochu Date: Mon, 24 Sep 2018 16:07:37 -0400 Subject: [PATCH 1/3] Add benchmark tests. Change the return type of the getElapsedTime methods. Split the init() method in the ChyfDataStore class. Write benchmark's logs into a file. --- .../net/refractions/chyf/ChyfDatastore.java | 162 +++++++++++------- .../chyf/hygraph/HyGraphBuilder.java | 37 ++++ .../chyf/hygraph/StreamOrderCalculator.java | 8 +- .../rest/messageconverters/ApiResponse.java | 6 +- .../java/net/refractions/util/StopWatch.java | 12 +- .../nrcan/cccmeo/benchmark/Benchmark.java | 98 +++++++++++ .../cccmeo/benchmark/BenchmarkController.java | 54 ++++++ .../nrcan/cccmeo/benchmark/BenchmarkData.java | 103 +++++++++++ src/main/resources/logback.xml | 18 +- 9 files changed, 418 insertions(+), 80 deletions(-) create mode 100644 src/main/java/nrcan/cccmeo/benchmark/Benchmark.java create mode 100644 src/main/java/nrcan/cccmeo/benchmark/BenchmarkController.java create mode 100644 src/main/java/nrcan/cccmeo/benchmark/BenchmarkData.java diff --git a/src/main/java/net/refractions/chyf/ChyfDatastore.java b/src/main/java/net/refractions/chyf/ChyfDatastore.java index aeda45e..901d6e3 100644 --- a/src/main/java/net/refractions/chyf/ChyfDatastore.java +++ b/src/main/java/net/refractions/chyf/ChyfDatastore.java @@ -42,14 +42,16 @@ import com.vividsolutions.jts.geom.MultiPolygon; import com.vividsolutions.jts.geom.Polygon; import com.vividsolutions.jts.geom.PrecisionModel; +import com.vividsolutions.jts.io.ParseException; import com.vividsolutions.jts.io.WKTReader; public class ChyfDatastore { static final Logger logger = LoggerFactory.getLogger(ChyfDatastore.class.getCanonicalName()); public static final int BASE_SRS = 6624; // Quebec Albers - public static GeometryFactory GEOMETRY_FACTORY = new GeometryFactory(new PrecisionModel(), BASE_SRS); public static final int MAX_RESULTS = 20000; + public static final int PRECISION_MODEL = 1000; + public static GeometryFactory GEOMETRY_FACTORY = new GeometryFactory(new PrecisionModel(PRECISION_MODEL), BASE_SRS); private HyGraph hyGraph; @@ -57,6 +59,10 @@ public ChyfDatastore() { init(); } + public ChyfDatastore(boolean benchmark) { + + } + public ChyfDatastore(String dataDir) { init(dataDir); } @@ -65,76 +71,22 @@ public HyGraph getHyGraph() { return hyGraph; } - private void init() { + public void init() { try { - GeometryFactory GEOMETRY_FACTORY = new GeometryFactory(new PrecisionModel(1000), BASE_SRS); - HyGraphBuilder gb = new HyGraphBuilder(); - - @SuppressWarnings("resource") - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringJdbcConfiguration.class); //ML - WKTReader wktreader = new WKTReader(); - // read and add Waterbodies - logger.info("Reading waterbodies"); - WaterbodyDAO waterbodyDAO = (WaterbodyDAO) context.getBean(WaterbodyDAO.class); - - for(Waterbody wb : waterbodyDAO.getWaterbodies()) { - Geometry waterCatchment = GEOMETRY_FACTORY.createGeometry(wktreader.read(wb.getLinestring())); - CatchmentType type = CatchmentType.UNKNOWN; - switch(wb.getDefinition()) { - case 1: - type = CatchmentType.WATER_CANAL; - break; - case 4: - type = CatchmentType.WATER_LAKE; - break; - case 6: - type = CatchmentType.WATER_RIVER; - break; - case 9: - type = CatchmentType.WATER_POND; - break; - } - gb.addECatchment(type, (Polygon)waterCatchment); - } + // read and create Waterbodies + List waterbodies = read(Waterbody.class); + createWaterbodies(waterbodies, gb); // read and add Catchments - logger.info("Reading catchments"); - CatchmentDAO catchmentDAO = (CatchmentDAO) context.getBean(CatchmentDAO.class); + List catchments = read(Catchment.class); + createCatchments(catchments, gb); - List catchments = catchmentDAO.getCatchments(); - for (Catchment c : catchments) { - Geometry catchment = GEOMETRY_FACTORY.createGeometry(wktreader.read(c.getLinestring())); - gb.addECatchment(CatchmentType.UNKNOWN, (Polygon)catchment); - } // read and add Flowpaths - logger.info("Reading flowpaths"); - FlowpathDAO flow = (FlowpathDAO) context.getBean(FlowpathDAO.class); - - List flowpaths = flow.getFlowpaths(); - for (Flowpath fp : flowpaths){ - Geometry flowPath = GEOMETRY_FACTORY.createGeometry(wktreader.read(fp.getLinestring())); - FlowpathType type = FlowpathType.convert(fp.getType()); //ML - String rankString = fp.getRank(); //ML - int rank = -1; - if(rankString.equals("Primary")) { - rank = 1; - } else if(rankString.equals("Secondary")) { - rank = 2; - } - String name = fp.getName().intern(); //ML - UUID nameId = null; - try { - nameId = UuidUtil.UuidFromString(fp.getNameId()); //ML - } catch(IllegalArgumentException iae) { - logger.warn("Exception reading UUID: " + iae.getMessage()); - } - Integer certainty = fp.getCertainty(); - gb.addEFlowpath(type, rank, name, nameId, certainty, (LineString)flowPath); - - } + List flowpaths = read(Flowpath.class); + createFlowpaths(flowpaths, gb); hyGraph = gb.build(); @@ -143,6 +95,90 @@ private void init() { } } + @SuppressWarnings("unchecked") + public List read(Class clazz) { + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringJdbcConfiguration.class); //ML + + if(clazz.equals(Waterbody.class)) { + logger.info("Reading waterbodies"); + WaterbodyDAO waterbodyDAO = (WaterbodyDAO) context.getBean(WaterbodyDAO.class); + return (List) waterbodyDAO.getWaterbodies(); + } + else if (clazz.equals(Catchment.class)) { + logger.info("Reading catchments"); + CatchmentDAO catchmentDAO = (CatchmentDAO) context.getBean(CatchmentDAO.class); + return (List) catchmentDAO.getCatchments(); + } + else if (clazz.equals(Flowpath.class)) { + logger.info("Reading flowpaths"); + FlowpathDAO flowpathDAO = (FlowpathDAO) context.getBean(FlowpathDAO.class); + return (List) flowpathDAO.getFlowpaths(); + } + return null; + + } + + public void createWaterbodies(List waterbodies, HyGraphBuilder gb) throws ParseException { + logger.info("Creating waterbodies"); + WKTReader wktreader = new WKTReader(); + + for(Waterbody wb : waterbodies) { + Geometry waterCatchment = GEOMETRY_FACTORY.createGeometry(wktreader.read(wb.getLinestring())); + CatchmentType type = CatchmentType.UNKNOWN; + switch(wb.getDefinition()) { + case 1: + type = CatchmentType.WATER_CANAL; + break; + case 4: + type = CatchmentType.WATER_LAKE; + break; + case 6: + type = CatchmentType.WATER_RIVER; + break; + case 9: + type = CatchmentType.WATER_POND; + break; + } + gb.addECatchment(type, (Polygon)waterCatchment); + } + } + + public void createCatchments(List catchments, HyGraphBuilder gb) throws ParseException { + logger.info("Creating catchments"); + WKTReader wktreader = new WKTReader(); + + for (Catchment c : catchments) { + Geometry catchment = GEOMETRY_FACTORY.createGeometry(wktreader.read(c.getLinestring())); + gb.addECatchment(CatchmentType.UNKNOWN, (Polygon)catchment); + } + } + + public void createFlowpaths(List flowpaths, HyGraphBuilder gb) throws ParseException { + logger.info("Creating flowpaths"); + WKTReader wktreader = new WKTReader(); + + for (Flowpath fp : flowpaths){ + Geometry flowPath = GEOMETRY_FACTORY.createGeometry(wktreader.read(fp.getLinestring())); + FlowpathType type = FlowpathType.convert(fp.getType()); //ML + String rankString = fp.getRank(); //ML + int rank = -1; + if(rankString.equals("Primary")) { + rank = 1; + } else if(rankString.equals("Secondary")) { + rank = 2; + } + String name = fp.getName().intern(); //ML + UUID nameId = null; + try { + nameId = UuidUtil.UuidFromString(fp.getNameId()); //ML + } catch(IllegalArgumentException iae) { + logger.warn("Exception reading UUID: " + iae.getMessage()); + } + Integer certainty = fp.getCertainty(); + gb.addEFlowpath(type, rank, name, nameId, certainty, (LineString)flowPath); + } + } + private void init(String dataDir) { try { // the shapefile data is actually in 4617 CSRS/GRS80/NAD83 diff --git a/src/main/java/net/refractions/chyf/hygraph/HyGraphBuilder.java b/src/main/java/net/refractions/chyf/hygraph/HyGraphBuilder.java index a8f2e5f..efc3e66 100644 --- a/src/main/java/net/refractions/chyf/hygraph/HyGraphBuilder.java +++ b/src/main/java/net/refractions/chyf/hygraph/HyGraphBuilder.java @@ -168,6 +168,43 @@ public Nexus addNexus(Point point) { nexusIndex.insert(node.getPoint().getEnvelopeInternal(),node); return node; } + + public void clearCatchments() { + this.eCatchments.clear(); + nextCatchmentId = 1; + this.eCatchmentIndex = new Quadtree(); + } + + public void clearFlowpaths() { + this.eFlowpaths.clear(); + nextNexusId = 1; + this.eCatchmentIndex = new Quadtree(); + } + + + public List getEFlowpaths() { + return eFlowpaths; + } + + public void setEFlowpaths(List eFlowpaths) { + this.eFlowpaths = eFlowpaths; + } + + public List getNexuses() { + return nexuses; + } + + public void setNexuses(List nexuses) { + this.nexuses = nexuses; + } + + public List geteCatchments() { + return eCatchments; + } + + public void seteCatchments(List eCatchments) { + this.eCatchments = eCatchments; + } private void classifyNexuses() { for(Nexus n : nexuses) { diff --git a/src/main/java/net/refractions/chyf/hygraph/StreamOrderCalculator.java b/src/main/java/net/refractions/chyf/hygraph/StreamOrderCalculator.java index ec94a42..daf14f7 100644 --- a/src/main/java/net/refractions/chyf/hygraph/StreamOrderCalculator.java +++ b/src/main/java/net/refractions/chyf/hygraph/StreamOrderCalculator.java @@ -8,15 +8,12 @@ import net.refractions.chyf.enumTypes.FlowpathType; import net.refractions.chyf.enumTypes.NexusType; -import net.refractions.util.StopWatch; public class StreamOrderCalculator { static final Logger logger = LoggerFactory.getLogger(StreamOrderCalculator.class.getCanonicalName()); public static void calcOrders(List eFlowpaths, List nexuses) { logger.info("Calculating Stream Orders"); - StopWatch sw = new StopWatch(); - sw.start(); // reset all stream orders to null everywhere for(EFlowpath f : eFlowpaths) { @@ -35,10 +32,7 @@ public static void calcOrders(List eFlowpaths, List nexuses) { mf.assignHackOrder(1); } } - } - - sw.stop(); - logger.info("Stream Orders calculated in " + sw.getElapsedTime() + "ms"); + } } private static Integer calcStrahlerOrder(EFlowpath f) { diff --git a/src/main/java/net/refractions/chyf/rest/messageconverters/ApiResponse.java b/src/main/java/net/refractions/chyf/rest/messageconverters/ApiResponse.java index 1766d00..6b29ba2 100644 --- a/src/main/java/net/refractions/chyf/rest/messageconverters/ApiResponse.java +++ b/src/main/java/net/refractions/chyf/rest/messageconverters/ApiResponse.java @@ -7,7 +7,7 @@ public class ApiResponse { private Object data; private int srs; - private long executionTime; + private double executionTime; private String errorMsg; private String callback = "jsonp"; private Double scale = null; @@ -54,11 +54,11 @@ public String getCallback() { return callback; } - public void setExecutionTime(long executionTime) { + public void setExecutionTime(double executionTime) { this.executionTime = executionTime; } - public long getExecutionTime() { + public double getExecutionTime() { return executionTime; } diff --git a/src/main/java/net/refractions/util/StopWatch.java b/src/main/java/net/refractions/util/StopWatch.java index 545f6b3..b8d55a2 100644 --- a/src/main/java/net/refractions/util/StopWatch.java +++ b/src/main/java/net/refractions/util/StopWatch.java @@ -20,13 +20,13 @@ public void stop() { * Returns elapsed time in milliseconds * @return elapsed time in milliseconds */ - public long getElapsedTime() { - long elapsed; + public double getElapsedTime() { + double elapsed; if(running) { - elapsed = (System.nanoTime() - startTime) / 1000000; + elapsed = (System.nanoTime() - startTime) / 1000000.0; } else { - elapsed = (stopTime - startTime) / 1000000; + elapsed = (stopTime - startTime) / 1000000.0; } return elapsed; } @@ -35,8 +35,8 @@ public long getElapsedTime() { * Returns elapsed time in seconds * @return elapsed time in seconds */ - public long getElapsedTimeSecs() { - return getElapsedTime() / 1000; + public double getElapsedTimeSecs() { + return getElapsedTime() / 1000.0; } // sample usage diff --git a/src/main/java/nrcan/cccmeo/benchmark/Benchmark.java b/src/main/java/nrcan/cccmeo/benchmark/Benchmark.java new file mode 100644 index 0000000..db31cad --- /dev/null +++ b/src/main/java/nrcan/cccmeo/benchmark/Benchmark.java @@ -0,0 +1,98 @@ +package nrcan.cccmeo.benchmark; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Formatter; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import net.refractions.util.StopWatch; + + +public abstract class Benchmark { + + protected static final Logger logger = LoggerFactory.getLogger(Benchmark.class.getCanonicalName()); + protected static final String UNIT = "s/op"; + protected static final int MAX_ITERATION = 100; + + protected static Formatter fmt; + protected static double[] iterationsTime; + protected static StopWatch stopWatch; + + public Benchmark() { + stopWatch = new StopWatch(); + iterationsTime = new double[MAX_ITERATION]; + fmt = new Formatter(); + } + + /** + * The main method that executes every functions + * @param functions - The set of functions to execute + */ + public static void run(Runnable functions) { + + logger.info("----------------------------------------------"); + logger.info("Start Benchmarking"); + + LocalDateTime ldt = LocalDateTime.now(); + DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); + logger.info(format.format(ldt)); + + fmt.format("%-50s %10s %10s %10s\n", "Method", "iterations", "Score", "Units"); + logger.info(fmt.toString()); + + functions.run(); + + System.out.println("End Benchmarking"); + logger.info("----------------------------------------------"); + } + + /** + * Execute a function several times to warm up the JVM + * @param iterations - The number of times the function is executed + * @param function - The function to execute + */ + protected static void warm(int iterations, Runnable function) { + for(Integer i = 0; i < iterations; i++) { + function.run(); + } + } + + /** + * Execute a single function multiple times and write the average result into a file + * @param iterations - The number of times the function is executed + * @param function - The function to execute + * @param nameFunction - The function's name + */ + protected static void iterate(int iterations, Runnable function, String nameFunction) { + for(Integer i = 0; i < iterations; i++) { + stopWatch.start(); + function.run(); + stopWatch.stop(); + iterationsTime[i] = stopWatch.getElapsedTimeSecs(); + } + double mean = getMean(iterationsTime, iterations); + + fmt = new Formatter(); + fmt.format("%-50s %10d %10g %10s\n", nameFunction, iterations, mean, UNIT); + logger.info(fmt.toString()); + } + + /** + * Calculate the mean + * @param table - The number table + * @param nbElement - The number of elements + * @return - The mean + */ + private static double getMean(double[] table, int nbElement) { + double sum = 0; + for (int i = 0; i < nbElement; i++) { + sum += table[i]; + } + return sum / nbElement; + } + +} + + diff --git a/src/main/java/nrcan/cccmeo/benchmark/BenchmarkController.java b/src/main/java/nrcan/cccmeo/benchmark/BenchmarkController.java new file mode 100644 index 0000000..d7ae49d --- /dev/null +++ b/src/main/java/nrcan/cccmeo/benchmark/BenchmarkController.java @@ -0,0 +1,54 @@ +package nrcan.cccmeo.benchmark; + +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.web.client.RestTemplate; + +/** + * This benchmark class is used for testing the controller of the REST API. + * The server must be started. + */ + +public class BenchmarkController extends Benchmark { + + private static final String LOCAL_PATH = "http://localhost:8080/chyf-pilot"; + private static HttpHeaders headers; + private static HttpEntity entity; + private static RestTemplate restTemplate; + + + public BenchmarkController() { + super(); + headers = new HttpHeaders(); + headers.set("Accept", "application/json"); + entity = new HttpEntity(headers); + restTemplate = new RestTemplate(); + } + + public static void main(String [] args) { + new BenchmarkController(); + run(() -> tests()); + } + + private static void tests() { + warm(10, () -> getDrainageAreaDownstreamOfLocation()); + iterate(10, () -> getDrainageAreaDownstreamOfLocation(), "GetDrainageAreaDownstreamOfLocation"); + + warm(10, () -> getDrainageAreaUpstreamOfLocation()); + iterate(10, () -> getDrainageAreaUpstreamOfLocation(), "GetDrainageAreaUpstreamOfLocation"); + } + + private static void getDrainageAreaDownstreamOfLocation() { + + restTemplate.exchange(LOCAL_PATH + "/drainageArea/downstreamOf.json?point=-73.35734367370607,44.97627451373233&removeHoles=false", + HttpMethod.GET, entity, String.class); + } + + private static void getDrainageAreaUpstreamOfLocation() { + + restTemplate.exchange(LOCAL_PATH + "/drainageArea/upstreamOf.json?point=-73.11985015869142,46.04715906440114&removeHoles=false", + HttpMethod.GET, entity, String.class); + } + +} diff --git a/src/main/java/nrcan/cccmeo/benchmark/BenchmarkData.java b/src/main/java/nrcan/cccmeo/benchmark/BenchmarkData.java new file mode 100644 index 0000000..14d260c --- /dev/null +++ b/src/main/java/nrcan/cccmeo/benchmark/BenchmarkData.java @@ -0,0 +1,103 @@ +package nrcan.cccmeo.benchmark; + +import java.util.List; + +import com.vividsolutions.jts.io.ParseException; + +import net.refractions.chyf.ChyfDatastore; +import net.refractions.chyf.hygraph.HyGraphBuilder; +import net.refractions.chyf.hygraph.StreamOrderCalculator; +import nrcan.cccmeo.chyf.db.Catchment; +import nrcan.cccmeo.chyf.db.Flowpath; +import nrcan.cccmeo.chyf.db.Waterbody; + +/** + * This benchmark class is used for testing the creation of the chyf application. + * The server does not have to be started. + */ + +public class BenchmarkData extends Benchmark { + + private static ChyfDatastore chyf; + private static HyGraphBuilder gb; + private static List waterbodies; + private static List catchments; + private static List flowpaths; + + public BenchmarkData() { + super(); + chyf = new ChyfDatastore(true); + gb = new HyGraphBuilder(); + } + + + public static void main(String [] args) { + new BenchmarkData(); + run(() -> tests()); + } + + private static void tests() { + warm(10, () -> readWaterbodies()); + iterate(10, () -> readWaterbodies(), "ReadWaterBodies"); + warm(10, () -> createWaterbodies()); + iterate(10, () -> createWaterbodies(), "CreateWaterBodies"); + + warm(10, () -> readCatchments()); + iterate(10, () -> readCatchments(), "ReadCatchments"); + warm(10, () -> createCatchments()); + iterate(10, () -> createCatchments(), "CreateCatchments"); + + warm(10, () -> readFlowpaths()); + iterate(10, () -> readFlowpaths(), "ReadFlowpaths"); + warm(10, () -> createFlowpaths()); + iterate(10, () -> createFlowpaths(), "CreateFlowpaths"); + + warm(10, () -> streamOrderCalculator()); + iterate(10, () -> streamOrderCalculator(), "StreamOrderCalculator"); + } + + + private static void readWaterbodies() { + waterbodies = chyf.read(Waterbody.class); + } + + private static void createWaterbodies() { + try { + gb.clearCatchments(); + chyf.createWaterbodies(waterbodies, gb); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + private static void readCatchments() { + catchments = chyf.read(Catchment.class); + } + + private static void createCatchments() { + try { + gb.clearCatchments(); + chyf.createCatchments(catchments, gb); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + private static void readFlowpaths() { + flowpaths = chyf.read(Flowpath.class); + } + + private static void createFlowpaths() { + try { + gb.clearFlowpaths(); + chyf.createFlowpaths(flowpaths, gb); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + private static void streamOrderCalculator() { + StreamOrderCalculator.calcOrders(gb.getEFlowpaths(), gb.getNexuses()); + } + +} diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 443e98f..5b6c3dc 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,13 +1,29 @@ - + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + ${FILE_PATH}/benchmark.log + + %msg%n + + + + + + + + \ No newline at end of file From 416302ab87001cd4144e02874123b44b38375701 Mon Sep 17 00:00:00 2001 From: davebrochu15 <43046538+davebrochu15@users.noreply.github.com> Date: Thu, 1 Nov 2018 10:57:01 -0400 Subject: [PATCH 2/3] Refactor - Remove unused functions --- .../java/net/refractions/chyf/ChyfDatastore.java | 4 ---- .../refractions/chyf/hygraph/HyGraphBuilder.java | 13 +------------ src/main/java/nrcan/cccmeo/benchmark/Benchmark.java | 4 ++-- .../java/nrcan/cccmeo/benchmark/BenchmarkData.java | 2 +- 4 files changed, 4 insertions(+), 19 deletions(-) diff --git a/src/main/java/net/refractions/chyf/ChyfDatastore.java b/src/main/java/net/refractions/chyf/ChyfDatastore.java index 901d6e3..a2149fa 100644 --- a/src/main/java/net/refractions/chyf/ChyfDatastore.java +++ b/src/main/java/net/refractions/chyf/ChyfDatastore.java @@ -59,10 +59,6 @@ public ChyfDatastore() { init(); } - public ChyfDatastore(boolean benchmark) { - - } - public ChyfDatastore(String dataDir) { init(dataDir); } diff --git a/src/main/java/net/refractions/chyf/hygraph/HyGraphBuilder.java b/src/main/java/net/refractions/chyf/hygraph/HyGraphBuilder.java index efc3e66..ec263e2 100644 --- a/src/main/java/net/refractions/chyf/hygraph/HyGraphBuilder.java +++ b/src/main/java/net/refractions/chyf/hygraph/HyGraphBuilder.java @@ -185,27 +185,16 @@ public void clearFlowpaths() { public List getEFlowpaths() { return eFlowpaths; } - - public void setEFlowpaths(List eFlowpaths) { - this.eFlowpaths = eFlowpaths; - } public List getNexuses() { return nexuses; } - public void setNexuses(List nexuses) { - this.nexuses = nexuses; - } - public List geteCatchments() { + public List getECatchments() { return eCatchments; } - public void seteCatchments(List eCatchments) { - this.eCatchments = eCatchments; - } - private void classifyNexuses() { for(Nexus n : nexuses) { if(n.getUpFlows().size() == 0) { diff --git a/src/main/java/nrcan/cccmeo/benchmark/Benchmark.java b/src/main/java/nrcan/cccmeo/benchmark/Benchmark.java index db31cad..45f9449 100644 --- a/src/main/java/nrcan/cccmeo/benchmark/Benchmark.java +++ b/src/main/java/nrcan/cccmeo/benchmark/Benchmark.java @@ -39,7 +39,7 @@ public static void run(Runnable functions) { DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); logger.info(format.format(ldt)); - fmt.format("%-50s %10s %10s %10s\n", "Method", "iterations", "Score", "Units"); + fmt.format("%-50s %10s %20s %10s\n", "Method", "iterations", "Score", "Units"); logger.info(fmt.toString()); functions.run(); @@ -75,7 +75,7 @@ protected static void iterate(int iterations, Runnable function, String nameFunc double mean = getMean(iterationsTime, iterations); fmt = new Formatter(); - fmt.format("%-50s %10d %10g %10s\n", nameFunction, iterations, mean, UNIT); + fmt.format("%-50s %10d %20g %10s\n", nameFunction, iterations, mean, UNIT); logger.info(fmt.toString()); } diff --git a/src/main/java/nrcan/cccmeo/benchmark/BenchmarkData.java b/src/main/java/nrcan/cccmeo/benchmark/BenchmarkData.java index 14d260c..84d6770 100644 --- a/src/main/java/nrcan/cccmeo/benchmark/BenchmarkData.java +++ b/src/main/java/nrcan/cccmeo/benchmark/BenchmarkData.java @@ -26,7 +26,7 @@ public class BenchmarkData extends Benchmark { public BenchmarkData() { super(); - chyf = new ChyfDatastore(true); + chyf = new ChyfDatastore(); gb = new HyGraphBuilder(); } From 95e7d57953fffbc41c5a8ed92ada04999332c7be Mon Sep 17 00:00:00 2001 From: davebrochu15 <43046538+davebrochu15@users.noreply.github.com> Date: Thu, 1 Nov 2018 11:00:44 -0400 Subject: [PATCH 3/3] Refactor - public to private --- src/main/java/net/refractions/chyf/ChyfDatastore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/refractions/chyf/ChyfDatastore.java b/src/main/java/net/refractions/chyf/ChyfDatastore.java index a2149fa..465eaaa 100644 --- a/src/main/java/net/refractions/chyf/ChyfDatastore.java +++ b/src/main/java/net/refractions/chyf/ChyfDatastore.java @@ -67,7 +67,7 @@ public HyGraph getHyGraph() { return hyGraph; } - public void init() { + private void init() { try { HyGraphBuilder gb = new HyGraphBuilder();