simplify-polyline 0.5.0

Simplify polylines using Douglas-Peucker and radial distance algorithms. Port of the simplify-js library.
Documentation
use criterion::{criterion_group, criterion_main, Criterion};

use simplify_polyline::{simplify, Point};

pub const BENCH_FIXTURE_1118: &str = include_str!("../fixtures/bench-1118.json");
pub const BENCH_FIXTURE_73752: &str = include_str!("../fixtures/bench-73752.json");

fn fixture_1118() -> Vec<Point<2, f64>> {
    serde_json::from_str::<Vec<Point<2, f64>>>(BENCH_FIXTURE_1118).unwrap()
}

fn fixture_73752() -> Vec<Point<2, f64>> {
    serde_json::from_str::<Vec<Point<2, f64>>>(BENCH_FIXTURE_73752).unwrap()
}

fn simplify_hq_1118_pts(c: &mut Criterion) {
    let points = fixture_1118();
    c.bench_function("simplify_hq_1118_pts", |b| {
        b.iter(|| simplify(&points, 1.0, true))
    });
}

fn simplify_lq_1118_pts(c: &mut Criterion) {
    let points = fixture_1118();
    c.bench_function("simplify_lq_1118_pts", |b| {
        b.iter(|| simplify(&points, 1.0, false))
    });
}

fn simplify_hq_1118_pts_tol5(c: &mut Criterion) {
    let points = fixture_1118();
    c.bench_function("simplify_hq_1118_pts_tol5", |b| {
        b.iter(|| simplify(&points, 5.0, true))
    });
}

fn simplify_lq_1118_pts_tol5(c: &mut Criterion) {
    let points = fixture_1118();
    c.bench_function("simplify_lq_1118_pts_tol5", |b| {
        b.iter(|| simplify(&points, 5.0, false))
    });
}

fn simplify_hq_73752_pts(c: &mut Criterion) {
    let points = fixture_73752();
    c.bench_function("simplify_hq_73752_pts", |b| {
        b.iter(|| simplify(&points, 1.0, true))
    });
}

fn simplify_lq_73752_pts(c: &mut Criterion) {
    let points = fixture_73752();
    c.bench_function("simplify_lq_73752_pts", |b| {
        b.iter(|| simplify(&points, 1.0, false))
    });
}

fn simplify_hq_73752_pts_tol5(c: &mut Criterion) {
    let points = fixture_73752();
    c.bench_function("simplify_hq_73752_pts_tol5", |b| {
        b.iter(|| simplify(&points, 5.0, true))
    });
}

fn simplify_lq_73752_pts_tol5(c: &mut Criterion) {
    let points = fixture_73752();
    c.bench_function("simplify_lq_73752_pts_tol5", |b| {
        b.iter(|| simplify(&points, 5.0, false))
    });
}

criterion_group!(
    simplify_1118,
    simplify_lq_1118_pts,
    simplify_lq_1118_pts_tol5,
    simplify_hq_1118_pts,
    simplify_hq_1118_pts_tol5
);
criterion_group!(
    simplify_73752,
    simplify_lq_73752_pts,
    simplify_lq_73752_pts_tol5,
    simplify_hq_73752_pts,
    simplify_hq_73752_pts_tol5
);

criterion_main!(simplify_1118, simplify_73752);