tor-browser

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

registry.rs (4381B)


      1 use criterion::criterion_group;
      2 use criterion::criterion_main;
      3 use criterion::Criterion;
      4 
      5 use futures::stream::StreamExt;
      6 use l10nregistry::source::ResourceId;
      7 use l10nregistry_tests::{FileSource, RegistrySetup, TestFileFetcher};
      8 use unic_langid::LanguageIdentifier;
      9 
     10 fn get_paths() -> Vec<ResourceId> {
     11    let paths: Vec<&'static str> = vec![
     12        "branding/brand.ftl",
     13        "browser/sanitize.ftl",
     14        "browser/preferences/colors.ftl",
     15        "browser/preferences/selectBookmark.ftl",
     16        "browser/preferences/connection.ftl",
     17        "browser/preferences/siteDataSettings.ftl",
     18        "browser/preferences/fonts.ftl",
     19        "browser/preferences/languages.ftl",
     20        "browser/preferences/preferences.ftl",
     21        "security/certificates/certManager.ftl",
     22        "security/certificates/deviceManager.ftl",
     23        "toolkit/global/textActions.ftl",
     24        "toolkit/printing/printUI.ftl",
     25        "toolkit/updates/history.ftl",
     26        "toolkit/firefoxlabs/features.ftl",
     27    ];
     28 
     29    paths.into_iter().map(ResourceId::from).collect()
     30 }
     31 
     32 fn registry_bench(c: &mut Criterion) {
     33    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
     34    let mut group = c.benchmark_group("non-metasource");
     35 
     36    let setup = RegistrySetup::new(
     37        "test",
     38        vec![
     39            FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
     40            FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
     41            FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
     42            FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
     43        ],
     44        vec![en_us.clone()],
     45    );
     46    let fetcher = TestFileFetcher::new();
     47    let (_, reg) = fetcher.get_registry_and_environment(setup);
     48 
     49    group.bench_function(&format!("serial",), |b| {
     50        b.iter(|| {
     51            let lang_ids = vec![en_us.clone()];
     52            let mut i = reg.generate_bundles_sync(lang_ids.into_iter(), get_paths());
     53            while let Some(_) = i.next() {}
     54        })
     55    });
     56 
     57    let rt = tokio::runtime::Runtime::new().unwrap();
     58    group.bench_function(&format!("parallel",), |b| {
     59        b.iter(|| {
     60            let lang_ids = vec![en_us.clone()];
     61            let mut i = reg.generate_bundles(lang_ids.into_iter(), get_paths());
     62            rt.block_on(async { while let Some(_) = i.as_mut().unwrap().next().await {} });
     63        })
     64    });
     65 
     66    group.finish();
     67 }
     68 
     69 fn registry_metasource_bench(c: &mut Criterion) {
     70    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
     71    let mut group = c.benchmark_group("metasource");
     72 
     73    let setup = RegistrySetup::new(
     74        "test",
     75        vec![
     76            FileSource::new(
     77                "toolkit",
     78                Some("app"),
     79                vec![en_us.clone()],
     80                "toolkit/{locale}/",
     81            ),
     82            FileSource::new(
     83                "browser",
     84                Some("app"),
     85                vec![en_us.clone()],
     86                "browser/{locale}/",
     87            ),
     88            FileSource::new(
     89                "toolkit",
     90                Some("langpack"),
     91                vec![en_us.clone()],
     92                "toolkit/{locale}/",
     93            ),
     94            FileSource::new(
     95                "browser",
     96                Some("langpack"),
     97                vec![en_us.clone()],
     98                "browser/{locale}/",
     99            ),
    100        ],
    101        vec![en_us.clone()],
    102    );
    103    let fetcher = TestFileFetcher::new();
    104    let (_, reg) = fetcher.get_registry_and_environment(setup);
    105 
    106    group.bench_function(&format!("serial",), |b| {
    107        b.iter(|| {
    108            let lang_ids = vec![en_us.clone()];
    109            let mut i = reg.generate_bundles_sync(lang_ids.into_iter(), get_paths());
    110            while let Some(_) = i.next() {}
    111        })
    112    });
    113 
    114    let rt = tokio::runtime::Runtime::new().unwrap();
    115    group.bench_function(&format!("parallel",), |b| {
    116        b.iter(|| {
    117            let lang_ids = vec![en_us.clone()];
    118            let mut i = reg.generate_bundles(lang_ids.into_iter(), get_paths());
    119            rt.block_on(async { while let Some(_) = i.as_mut().unwrap().next().await {} });
    120        })
    121    });
    122 
    123    group.finish();
    124 }
    125 
    126 criterion_group!(
    127    name = benches;
    128    config = Criterion::default().sample_size(10);
    129    targets = registry_bench, registry_metasource_bench
    130 );
    131 criterion_main!(benches);