preferences.rs (1985B)
1 use criterion::criterion_group; 2 use criterion::criterion_main; 3 use criterion::Criterion; 4 5 use fluent_testing::get_scenarios; 6 use l10nregistry_tests::TestFileFetcher; 7 8 use unic_langid::LanguageIdentifier; 9 10 fn preferences_bench(c: &mut Criterion) { 11 let fetcher = TestFileFetcher::new(); 12 13 let mut group = c.benchmark_group("registry/scenarios"); 14 15 for scenario in get_scenarios() { 16 let res_ids = scenario.res_ids.clone(); 17 18 let locales: Vec<LanguageIdentifier> = scenario 19 .locales 20 .iter() 21 .map(|l| l.parse().unwrap()) 22 .collect(); 23 24 group.bench_function(format!("{}/sync/first_bundle", scenario.name), |b| { 25 b.iter(|| { 26 let reg = fetcher.get_registry(&scenario); 27 let mut bundles = 28 reg.generate_bundles_sync(locales.clone().into_iter(), res_ids.clone()); 29 for _ in 0..locales.len() { 30 if bundles.next().is_some() { 31 break; 32 } 33 } 34 }) 35 }); 36 37 #[cfg(feature = "tokio")] 38 { 39 use futures::stream::StreamExt; 40 41 let rt = tokio::runtime::Runtime::new().unwrap(); 42 43 group.bench_function(&format!("{}/async/first_bundle", scenario.name), |b| { 44 b.iter(|| { 45 rt.block_on(async { 46 let reg = fetcher.get_registry(&scenario); 47 48 let mut bundles = 49 reg.generate_bundles(locales.clone().into_iter(), res_ids.clone()); 50 for _ in 0..locales.len() { 51 if bundles.next().await.is_some() { 52 break; 53 } 54 } 55 }); 56 }) 57 }); 58 } 59 } 60 61 group.finish(); 62 } 63 64 criterion_group!(benches, preferences_bench); 65 criterion_main!(benches);