Skip to content

Commit 5f1ebeb

Browse files
committed
Benchmark alphabet_cyrillic_calculate_scores and alphabet_latin_calculate_scores
1 parent 879b654 commit 5f1ebeb

File tree

4 files changed

+38
-7
lines changed

4 files changed

+38
-7
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ For more details, please check a blog article [Introduction to Rust Whatlang Lib
9696
This is mostly useful to test performance optimizations.
9797

9898
```
99-
cargo bench
99+
cargo bench --all-features
100100
```
101101

102102
## Comparison with alternatives

benches/example.rs

+30-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
#[macro_use]
22
extern crate bencher;
3-
extern crate serde_json;
4-
extern crate whatlang;
53

64
use bencher::Bencher;
75
use std::collections::HashMap;
6+
use whatlang::dev::{
7+
alphabet_cyrillic_calculate_scores, alphabet_latin_calculate_scores, FilterList, LowercaseText,
8+
};
89
use whatlang::{detect, detect_script};
910

1011
fn bench_detect(bench: &mut Bencher) {
@@ -29,5 +30,31 @@ fn bench_detect_script(bench: &mut Bencher) {
2930
})
3031
}
3132

32-
benchmark_group!(benches, bench_detect, bench_detect_script);
33+
fn bench_alphabet_latin_calculate_scores(bench: &mut Bencher) {
34+
let text = "Ich sehe auf die Uhr. Es ist kurz vor Mittag, und da heute Sonnabend ist, mache ich Schluß. Por ke lingvo internacia povu bone kaj regule progresadi kaj por ke ĝi havu plenan certecon, ke ĝi neniam disfalos kaj ia facilanima paŝo de ĝiaj amikoj estontaj ne detruos la laborojn de ĝiaj amikoj estintaj, - estas plej necesa antaŭ ĉio unu kondiĉo: la ezistado de klare difinita, neniam tuŝebla kaj neniam ŝangebla Fundamento de la lingvo.";
35+
let lowercase_text = LowercaseText::new(text);
36+
let filter = FilterList::All;
37+
38+
bench.iter(|| {
39+
alphabet_latin_calculate_scores(&lowercase_text, &filter);
40+
})
41+
}
42+
43+
fn bench_alphabet_cyrillic_calculate_scores(bench: &mut Bencher) {
44+
let text = "Творець есперанто Людвік Заменгоф назвав свою мову просто Lingvo internacia «міжнародна мова». Оскільки на той час у Європі популярною була інша штучна мова — волапюк, прихильники есперанто часто казали «мова доктора Есперанто». Згодом це формулювання скоротилося до «мова Есперанто», а врешті-решт залишилося одне лише слово «Esperanto», яке есперантською пишуть з великої літери, аби його можна було відрізнити від слова «людина, яка сподівається»";
45+
let lowercase_text = LowercaseText::new(text);
46+
let filter = FilterList::All;
47+
48+
bench.iter(|| {
49+
alphabet_cyrillic_calculate_scores(&lowercase_text, &filter);
50+
})
51+
}
52+
53+
benchmark_group!(
54+
benches,
55+
bench_detect,
56+
bench_detect_script,
57+
bench_alphabet_latin_calculate_scores,
58+
bench_alphabet_cyrillic_calculate_scores,
59+
);
3360
benchmark_main!(benches);

src/alphabets/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
mod cyrillic;
1+
pub(crate) mod cyrillic;
22
pub(crate) mod detection;
3-
mod latin;
3+
pub(crate) mod latin;
44

55
pub use detection::{detect, raw_detect};
66

src/dev.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@ pub use crate::lang::Lang;
99
pub use crate::scripts::{detect_script, raw_detect_script, RawScriptInfo, Script};
1010
pub use crate::trigrams::{raw_detect as trigrams_raw_detect, RawOutcome as RawTrigramsInfo};
1111

12+
pub use crate::alphabets::cyrillic::alphabet_calculate_scores as alphabet_cyrillic_calculate_scores;
13+
pub use crate::alphabets::latin::alphabet_calculate_scores as alphabet_latin_calculate_scores;
14+
pub use crate::core::{FilterList, LowercaseText};
15+
1216
// private imports
1317
use crate::core::detect::detect_lang_base_on_mandarin_script;
14-
use crate::core::{FilterList, Query};
18+
use crate::core::Query;
1519
use crate::scripts::grouping::ScriptLangGroup;
1620

1721
#[derive(Debug)]

0 commit comments

Comments
 (0)