bench/
bench.rs

1use std::time::Instant;
2use boring_parser::{boring_structs_300::Boring300, parser::Parse, coordinate::GeoCoordinate};
3use boring_parser::transform::{JgdTransformer, SurveyStartDate};
4
5fn main() {
6    // ファイル読み込み
7    let xml_bytes = std::fs::read("107282 (1).xml").unwrap();
8    let (utf8, _, _) = encoding_rs::SHIFT_JIS.decode(&xml_bytes);
9    let xml_str = utf8.to_string();
10    
11    // パース計測
12    let start = Instant::now();
13    let boring = Boring300::parse_from_str(&xml_str).unwrap();
14    println!("Parse: {:?}", start.elapsed());
15    
16    // 変換器初期化計測
17    let start = Instant::now();
18    let transformer = JgdTransformer::with_survey_date(
19        "params/TKY2JGD.par",
20        "params/patch_files",
21        SurveyStartDate::new(2010, 5, 15),
22    ).unwrap();
23    println!("Transformer init: {:?}", start.elapsed());
24    
25    // 座標変換計測
26    let start = Instant::now();
27    let loc = boring.geo_location();
28    let result = loc.to_wgs84(&transformer);
29    println!("Coordinate transform: {:?}", start.elapsed());
30    println!("Result: {:?}", result);
31    
32    // 100回ループ計測
33    let start = Instant::now();
34    for _ in 0..100 {
35        let loc = boring.geo_location();
36        let _ = loc.to_wgs84(&transformer);
37    }
38    println!("100x transform: {:?}", start.elapsed());
39}