tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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);