mirror of
https://github.com/maplibre/martin.git
synced 2024-12-19 12:51:37 +03:00
ad6c5297dd
This does not force automatic use statement sorting, but it sorts all them now, and we can manually keep them ordered until the fmt features becomes stable.
119 lines
3.5 KiB
Rust
119 lines
3.5 KiB
Rust
use std::collections::HashMap;
|
|
|
|
use criterion::{criterion_group, criterion_main, Criterion};
|
|
use martin::composite_source::CompositeSource;
|
|
use martin::dev::make_pool;
|
|
use martin::function_source::FunctionSource;
|
|
use martin::source::{Source, Xyz};
|
|
use martin::table_source::TableSource;
|
|
|
|
fn mock_table_source(schema: &str, table: &str) -> TableSource {
|
|
TableSource {
|
|
id: format!("{schema}.{table}"),
|
|
schema: schema.to_owned(),
|
|
table: table.to_owned(),
|
|
id_column: None,
|
|
geometry_column: "geom".to_owned(),
|
|
minzoom: None,
|
|
maxzoom: None,
|
|
bounds: None,
|
|
srid: 3857,
|
|
extent: Some(4096),
|
|
buffer: Some(64),
|
|
clip_geom: Some(true),
|
|
geometry_type: None,
|
|
properties: HashMap::new(),
|
|
}
|
|
}
|
|
|
|
fn mock_function_source(schema: &str, function: &str) -> FunctionSource {
|
|
FunctionSource {
|
|
id: format!("{schema}.{function}"),
|
|
schema: schema.to_owned(),
|
|
function: function.to_owned(),
|
|
minzoom: None,
|
|
maxzoom: None,
|
|
bounds: None,
|
|
}
|
|
}
|
|
|
|
async fn get_table_source() {
|
|
let source = mock_table_source("public", "table_source");
|
|
let _tilejson = source.get_tilejson();
|
|
}
|
|
|
|
async fn get_table_source_tile() {
|
|
let pool = make_pool();
|
|
let mut connection = pool.get().unwrap();
|
|
|
|
let source = mock_table_source("public", "table_source");
|
|
let xyz = Xyz { z: 0, x: 0, y: 0 };
|
|
|
|
let _tile = source.get_tile(&mut connection, &xyz, &None).unwrap();
|
|
}
|
|
|
|
async fn get_composite_source() {
|
|
let points1 = mock_table_source("public", "points1");
|
|
let points2 = mock_table_source("public", "points2");
|
|
|
|
let source = CompositeSource {
|
|
id: "public.points1,public.points2".to_owned(),
|
|
table_sources: vec![points1, points2],
|
|
};
|
|
|
|
let _tilejson = source.get_tilejson();
|
|
}
|
|
|
|
async fn get_composite_source_tile() {
|
|
let pool = make_pool();
|
|
let mut connection = pool.get().unwrap();
|
|
|
|
let points1 = mock_table_source("public", "points1");
|
|
let points2 = mock_table_source("public", "points2");
|
|
|
|
let source = CompositeSource {
|
|
id: "public.points1,public.points2".to_owned(),
|
|
table_sources: vec![points1, points2],
|
|
};
|
|
|
|
let xyz = Xyz { z: 0, x: 0, y: 0 };
|
|
let _tile = source.get_tile(&mut connection, &xyz, &None).unwrap();
|
|
}
|
|
|
|
async fn get_function_source() {
|
|
let source = mock_function_source("public", "function_source");
|
|
let _tilejson = source.get_tilejson();
|
|
}
|
|
|
|
async fn get_function_source_tile() {
|
|
let pool = make_pool();
|
|
let mut connection = pool.get().unwrap();
|
|
|
|
let source = mock_function_source("public", "function_source");
|
|
let xyz = Xyz { z: 0, x: 0, y: 0 };
|
|
|
|
let _tile = source.get_tile(&mut connection, &xyz, &None).unwrap();
|
|
}
|
|
|
|
fn table_source(c: &mut Criterion) {
|
|
c.bench_function("get_table_source", |b| b.iter(get_table_source));
|
|
c.bench_function("get_table_source_tile", |b| b.iter(get_table_source_tile));
|
|
}
|
|
|
|
fn composite_source(c: &mut Criterion) {
|
|
c.bench_function("get_composite_source", |b| b.iter(get_composite_source));
|
|
c.bench_function("get_composite_source_tile", |b| {
|
|
b.iter(get_composite_source_tile)
|
|
});
|
|
}
|
|
|
|
fn function_source(c: &mut Criterion) {
|
|
c.bench_function("get_function_source", |b| b.iter(get_function_source));
|
|
c.bench_function("get_function_source_tile", |b| {
|
|
b.iter(get_function_source_tile)
|
|
});
|
|
}
|
|
|
|
criterion_group!(benches, table_source, composite_source, function_source);
|
|
criterion_main!(benches);
|