1use std::fs::File;
2use std::io::BufReader;
3use std::io::BufRead;
4use std::path::PathBuf;
5use std::time::Instant;
6use std::env;
7
8use igo::Tagger;
9
10fn setup_tagger() -> Tagger {
11 let dic_dir = PathBuf::from("data/ipadic");
12 Tagger::new(&dic_dir).unwrap()
13}
14
15fn main() {
16 let repeat: usize = env::args().nth(1)
17 .and_then(|s| s.parse().ok()).unwrap_or(1000);
18 let input_path = env::args().nth(2)
19 .unwrap_or("data/text1.txt".to_string());
20
21 println!("input file path: {}", input_path);
22 let reader = BufReader::new(File::open(input_path).unwrap());
23 let lines: Vec<_> = reader.lines().map(|l| l.unwrap()).collect();
24
25 let tagger = setup_tagger();
26 let start_time = Instant::now();
27
28 println!("start {} iter", repeat);
29
30 for _ in 0..repeat {
31 for line in &lines {
32 tagger.parse(line);
33 }
34 }
35
36 let elapsed = start_time.elapsed();
37 let ms = (((elapsed.as_secs() as f64) * 1000.0)
38 + ((elapsed.subsec_nanos() as f64) / 1_000_000.0)) / (repeat as f64);
39 println!("elapsed: {} ms/iter", ms);
40}