/* * Copyright (c) 2016 Vivid Solutions. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v. 1.0 which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * * http://www.eclipse.org/org/documents/edl-v10.php. */ package test.jts; import java.util.Date; import org.locationtech.jts.algorithm.LineIntersector; import org.locationtech.jts.algorithm.NonRobustLineIntersector; import org.locationtech.jts.algorithm.RobustLineIntersector; import org.locationtech.jts.geom.Coordinate; /** * @version 1.7 */ public class LineIntersectorBenchmark implements Runnable { public LineIntersectorBenchmark() { } public static void main(String[] args) { LineIntersectorBenchmark lineIntersectorBenchmark = new LineIntersectorBenchmark(); lineIntersectorBenchmark.run(); } public void run() { exercise(new NonRobustLineIntersector()); exercise(new RobustLineIntersector()); } private void exercise(LineIntersector lineIntersector) { System.out.println(lineIntersector.getClass().getName()); Date start = new Date(); for (int i = 0; i < 1000000; i++) { exerciseOnce(lineIntersector); } Date end = new Date(); System.out.println("Milliseconds elapsed: " + (end.getTime() - start.getTime())); System.out.println(); } private void exerciseOnce(LineIntersector lineIntersector) { Coordinate p1 = new Coordinate(10, 10); Coordinate p2 = new Coordinate(20, 20); Coordinate q1 = new Coordinate(20, 10); Coordinate q2 = new Coordinate(10, 20); Coordinate x = new Coordinate(15, 15); lineIntersector.computeIntersection(p1, p2, q1, q2); lineIntersector.getIntersectionNum(); lineIntersector.getIntersection(0); lineIntersector.isProper(); lineIntersector.hasIntersection(); p1 = new Coordinate(10, 10); p2 = new Coordinate(20, 10); q1 = new Coordinate(22, 10); q2 = new Coordinate(30, 10); lineIntersector.computeIntersection(p1, p2, q1, q2); lineIntersector.isProper(); lineIntersector.hasIntersection(); p1 = new Coordinate(10, 10); p2 = new Coordinate(20, 10); q1 = new Coordinate(20, 10); q2 = new Coordinate(30, 10); lineIntersector.computeIntersection(p1, p2, q1, q2); lineIntersector.isProper(); lineIntersector.hasIntersection(); p1 = new Coordinate(10, 10); p2 = new Coordinate(20, 10); q1 = new Coordinate(15, 10); q2 = new Coordinate(30, 10); lineIntersector.computeIntersection(p1, p2, q1, q2); lineIntersector.isProper(); lineIntersector.hasIntersection(); p1 = new Coordinate(30, 10); p2 = new Coordinate(20, 10); q1 = new Coordinate(10, 10); q2 = new Coordinate(30, 10); lineIntersector.computeIntersection(p1, p2, q1, q2); lineIntersector.hasIntersection(); lineIntersector.computeIntersection(new Coordinate(100, 100), new Coordinate(10, 100), new Coordinate(100, 10), new Coordinate(100, 100)); lineIntersector.hasIntersection(); lineIntersector.getIntersectionNum(); lineIntersector.computeIntersection(new Coordinate(190, 50), new Coordinate(120, 100), new Coordinate(120, 100), new Coordinate(50, 150)); lineIntersector.hasIntersection(); lineIntersector.getIntersectionNum(); lineIntersector.getIntersection(1); lineIntersector.computeIntersection(new Coordinate(180, 200), new Coordinate(160, 180), new Coordinate(220, 240), new Coordinate(140, 160)); lineIntersector.hasIntersection(); lineIntersector.getIntersectionNum(); lineIntersector.computeIntersection(new Coordinate(30, 10), new Coordinate(30, 30), new Coordinate(10, 10), new Coordinate(90, 11)); lineIntersector.hasIntersection(); lineIntersector.getIntersectionNum(); lineIntersector.isProper(); lineIntersector.computeIntersection(new Coordinate(10, 30), new Coordinate(10, 0), new Coordinate(11, 90), new Coordinate(10, 10)); lineIntersector.hasIntersection(); lineIntersector.getIntersectionNum(); lineIntersector.isProper(); } }