22//
33
44use geom:: prelude:: * ;
5- use offroad:: { offset:: pline_01 , offset_connect_raw , offset_polyline_raw , offset_prune_invalid , offset_raw :: OffsetRaw , offset_split_arcs , poly_to_raws } ;
5+ use offroad:: { offset:: { offset_polyline_to_polyline , pline_01 , OffsetCfg } } ;
66
77
88
@@ -11,49 +11,37 @@ fn main() {
1111 divan:: main ( ) ;
1212}
1313
14- fn offset_multiple_bench ( poly_raws : & Vec < Vec < OffsetRaw > > , off : f64 ) {
15- let offset_raw = offset_polyline_raw ( & poly_raws, off) ;
16-
17- let offset_connect = offset_connect_raw ( & offset_raw, off) ;
18-
19- let mut offset_split = offset_split_arcs ( & offset_raw, & offset_connect) ;
20-
21- let _offset_final = offset_prune_invalid ( & poly_raws, & mut offset_split, off) ;
22- }
2314
2415#[ divan:: bench( args = [ 1.0 , 2.0 , 4.0 , 8.0 , 16.0 , 32.0 , 64.0 , 128.0 , 256.0 ] ,
2516 max_time = 1.0 , // seconds
2617 sample_size = 200 , // 64 × 84 = 5376
2718 ) ]
28- fn bench_offset_multiple_complex_polyline ( off : f64 ) {
29- let mut plines : Vec < Vec < crate :: PVertex > > = Vec :: new ( ) ;
19+ fn bench_offset_polyline_to_polyline ( off : f64 ) {
20+ let mut cfg = OffsetCfg :: default ( ) ;
3021
3122 let mut p = pline_01 ( ) [ 0 ] . clone ( ) ;
3223 p = polyline_translate ( & p, point ( 180.0 , -60.0 ) ) ;
3324 p = polyline_scale ( & p, 2.5 ) ;
34- plines. push ( p. clone ( ) ) ;
35- let poly_raws = poly_to_raws ( & plines) ;
36- offset_multiple_bench ( & poly_raws, off) ;
25+ offset_polyline_to_polyline ( & p, 16.0 , & mut cfg) ;
3726
3827 let p2 = polyline_reverse ( & p) ;
39- let poly_raws = poly_to_raws ( & vec ! [ p2] ) ;
40- offset_multiple_bench ( & poly_raws, off) ;
28+ offset_polyline_to_polyline ( & p2, 16.0 , & mut cfg) ;
4129}
4230
4331/*
4432> cargo bench
4533
4634Timer precision: 20 ns
47- offset_multiple fastest │ slowest │ median │ mean │ samples │ iters
48- ╰─ bench_offset_multiple_complex_polyline │ │ │ │ │
49- ├─ 1 222.4 µs │ 233.6 µs │ 223.6 µs │ 224 .5 µs │ 23 │ 4600
50- ├─ 2 222.2 µs │ 229.8 µs │ 222.9 µs │ 223.3 µs │ 23 │ 4600
51- ├─ 4 222 µs │ 233.6 µs │ 222.6 µs │ 223.4 µs │ 23 │ 4600
52- ├─ 8 222.9 µs │ 315.2 µs │ 225.7 µs │ 247.6 µs │ 21 │ 4200
53- ├─ 16 352.1 µs │ 381.9 µs │ 368.7 µs │ 369.8 µs │ 14 │ 2800
54- ├─ 32 393.8 µs │ 410 .4 µs │ 403.3 µs │ 402.3 µs │ 13 │ 2600
55- ├─ 64 566.3 µs │ 634.4 µs │ 586 µs │ 591.9 µs │ 9 │ 1800
56- ├─ 128 542.7 µs │ 582.6 µs │ 571 µs │ 568 µs │ 9 │ 1800
57- ╰─ 256 650.9 µs │ 696.5 µs │ 673.3 µs │ 670.1 µs │ 8 │ 1600
35+ bench_offset_multiple fastest │ slowest │ median │ mean │ samples │ iters
36+ ╰─ bench_offset_polyline_to_polyline │ │ │ │ │
37+ ├─ 1 373.1 µs │ 446.2 µs │ 375.3 µs │ 388 .5 µs │ 13 │ 2600
38+ ├─ 2 480 µs │ 565.5 µs │ 534.3 µs │ 529 µs │ 10 │ 2000
39+ ├─ 4 545.9 µs │ 565 µs │ 562.8 µs │ 559.9 µs │ 9 │ 1800
40+ ├─ 8 566.8 µs │ 628.3 µs │ 581.6 µs │ 584.4 µs │ 9 │ 1800
41+ ├─ 16 674.7 µs │ 784.2 µs │ 715.3 µs │ 729.3 µs │ 7 │ 1400
42+ ├─ 32 642.5 µs │ 917 .4 µs │ 755.8 µs │ 775.4 µs │ 7 │ 1400
43+ ├─ 64 568.9 µs │ 623.1 µs │ 589.6 µs │ 595 µs │ 9 │ 1800
44+ ├─ 128 566.6 µs │ 585.9 µs │ 568.6 µs │ 571.5 µs │ 9 │ 1800
45+ ╰─ 256 565 µs │ 585.2 µs │ 566.5 µs │ 570.5 µs │ 9 │ 1800
5846
5947*/
0 commit comments