geo 0.12.1

Geospatial primitives and algorithms
Documentation
#[macro_use]
extern crate criterion;
extern crate geo;
use geo::convexhull::ConvexHull;
use geo::euclidean_distance::EuclideanDistance;
use geo::Polygon;

fn criterion_benchmark(c: &mut criterion::Criterion) {
    c.bench_function("Polygon Euclidean distance RTree f64", |bencher| {
        let points = include!("../src/algorithm/test_fixtures/norway_nonconvex_hull.rs");
        let poly1 = Polygon::new(points.into(), vec![]);
        let vec2 = vec![
            (-6.064453, 68.49604),
            (-7.426758, 68.688521),
            (-8.569336, 68.544315),
            (-9.272461, 68.431513),
            (-10.063477, 68.285651),
            (-10.898438, 68.056889),
            (-11.337891, 67.792641),
            (-11.601563, 67.458082),
            (-11.601563, 66.964476),
            (-11.425781, 66.583217),
            (-11.25, 66.319861),
            (-10.898438, 65.964377),
            (-10.678711, 65.802776),
            (-10.283203, 65.549367),
            (-9.975586, 65.385147),
            (-9.448242, 65.127638),
            (-8.701172, 64.848937),
            (-7.910156, 64.642704),
            (-7.075195, 64.642704),
            (-6.416016, 64.75539),
            (-5.361328, 64.979359),
            (-4.790039, 65.366837),
            (-4.526367, 65.676381),
            (-4.482422, 66.196009),
            (-4.614258, 66.705169),
            (-4.87793, 67.118748),
            (-4.174805, 67.474922),
            (-4.833984, 67.958148),
            (-6.064453, 68.49604),
        ];
        let poly2 = Polygon::new(vec2.into(), vec![]);
        bencher.iter(|| {
            let _ = poly1.euclidean_distance(&poly2);
        });
    });

    c.bench_function(
        "Polygon Euclidean distance rotating calipers f64",
        |bencher| {
            let points = include!("../src/algorithm/test_fixtures/norway_convex_hull.rs");
            let poly1 = Polygon::new(points.into(), vec![]).convex_hull();
            let vec2 = vec![
                (-6.064453, 68.49604),
                (-7.426758, 68.688521),
                (-8.569336, 68.544315),
                (-9.272461, 68.431513),
                (-10.063477, 68.285651),
                (-10.898438, 68.056889),
                (-11.337891, 67.792641),
                (-11.601563, 67.458082),
                (-11.601563, 66.964476),
                (-11.425781, 66.583217),
                (-11.25, 66.319861),
                (-10.898438, 65.964377),
                (-10.678711, 65.802776),
                (-10.283203, 65.549367),
                (-9.975586, 65.385147),
                (-9.448242, 65.127638),
                (-8.701172, 64.848937),
                (-7.910156, 64.642704),
                (-7.075195, 64.642704),
                (-6.416016, 64.75539),
                (-5.361328, 64.979359),
                (-4.790039, 65.366837),
                (-4.526367, 65.676381),
                (-4.482422, 66.196009),
                (-4.614258, 66.705169),
                (-4.87793, 67.118748),
                (-4.174805, 67.474922),
                (-4.833984, 67.958148),
                (-6.064453, 68.49604),
            ];
            let poly2 = Polygon::new(vec2.into(), vec![]).convex_hull();
            bencher.iter(|| {
                let _ = poly1.euclidean_distance(&poly2);
            });
        },
    );
}

criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);