boring-parser 0.3.1

A Rust library for boring xml parsing
Documentation
use std::time::Instant;
use boring_parser::{boring_structs_300::Boring300, parser::Parse, coordinate::GeoCoordinate};
use boring_parser::transform::{JgdTransformer, SurveyStartDate};

fn main() {
    // ファイル読み込み
    let xml_bytes = std::fs::read("107282 (1).xml").unwrap();
    let (utf8, _, _) = encoding_rs::SHIFT_JIS.decode(&xml_bytes);
    let xml_str = utf8.to_string();
    
    // パース計測
    let start = Instant::now();
    let boring = Boring300::parse_from_str(&xml_str).unwrap();
    println!("Parse: {:?}", start.elapsed());
    
    // 変換器初期化計測
    let start = Instant::now();
    let transformer = JgdTransformer::with_survey_date(
        "params/TKY2JGD.par",
        "params/patch_files",
        SurveyStartDate::new(2010, 5, 15),
    ).unwrap();
    println!("Transformer init: {:?}", start.elapsed());
    
    // 座標変換計測
    let start = Instant::now();
    let loc = boring.geo_location();
    let result = loc.to_wgs84(&transformer);
    println!("Coordinate transform: {:?}", start.elapsed());
    println!("Result: {:?}", result);
    
    // 100回ループ計測
    let start = Instant::now();
    for _ in 0..100 {
        let loc = boring.geo_location();
        let _ = loc.to_wgs84(&transformer);
    }
    println!("100x transform: {:?}", start.elapsed());
}