Skip to content

Commit e8cc677

Browse files
committed
Add new benchmarks, update the lists
1 parent fd4b7b3 commit e8cc677

File tree

10 files changed

+283452
-156240
lines changed

10 files changed

+283452
-156240
lines changed

benches/bench_matching.rs

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,11 @@ fn bench_matching_only(blocker: &Blocker, resources: &ResourceStorage, requests:
7676
(matches, passes)
7777
}
7878

79+
type ParsedRequest = (String, String, String, String, bool);
80+
7981
fn bench_rule_matching_browserlike(
8082
blocker: &Engine,
81-
requests: &Vec<(String, String, String, String, bool)>,
83+
requests: &Vec<ParsedRequest>,
8284
) -> (u32, u32) {
8385
let mut matches = 0;
8486
let mut passes = 0;
@@ -331,27 +333,60 @@ fn rule_match_browserlike_comparable(c: &mut Criterion) {
331333
.collect::<Vec<_>>()
332334
}
333335

334-
let elep_req = requests_parsed(&requests);
335-
let el_req = elep_req.clone();
336-
let slim = elep_req.clone();
336+
let requests = requests_parsed(&requests);
337337

338-
group.bench_function("el+ep", move |b| {
338+
group.bench_function("el+ep", |b| {
339339
let rules = rules_from_lists(&[
340340
"data/easylist.to/easylist/easylist.txt",
341341
"data/easylist.to/easylist/easyprivacy.txt",
342342
]);
343343
let engine = Engine::from_rules_parametrised(rules, Default::default(), false, true);
344-
b.iter(|| bench_rule_matching_browserlike(&engine, &elep_req))
344+
b.iter(|| bench_rule_matching_browserlike(&engine, &requests))
345345
});
346-
group.bench_function("el", move |b| {
346+
group.bench_function("el", |b| {
347347
let rules = rules_from_lists(&["data/easylist.to/easylist/easylist.txt"]);
348348
let engine = Engine::from_rules_parametrised(rules, Default::default(), false, true);
349-
b.iter(|| bench_rule_matching_browserlike(&engine, &el_req))
349+
b.iter(|| bench_rule_matching_browserlike(&engine, &requests))
350350
});
351-
group.bench_function("slimlist", move |b| {
351+
group.bench_function("slimlist", |b| {
352352
let rules = rules_from_lists(&["data/slim-list.txt"]);
353353
let engine = Engine::from_rules_parametrised(rules, Default::default(), false, true);
354-
b.iter(|| bench_rule_matching_browserlike(&engine, &slim))
354+
b.iter(|| bench_rule_matching_browserlike(&engine, &requests))
355+
});
356+
group.bench_function("brave-list", |b| {
357+
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
358+
let engine = Engine::from_rules_parametrised(rules, Default::default(), false, true);
359+
b.iter(|| bench_rule_matching_browserlike(&engine, &requests))
360+
});
361+
362+
group.finish();
363+
}
364+
365+
fn rule_match_first_request(c: &mut Criterion) {
366+
let mut group = c.benchmark_group("rule-match-first-request");
367+
368+
group.sample_size(10);
369+
370+
let requests: Vec<ParsedRequest> = vec![(
371+
"https://example.com".to_string(),
372+
"example.com".to_string(),
373+
"example.com".to_string(),
374+
"document".to_string(),
375+
false,
376+
)];
377+
378+
group.bench_function("brave-list", |b| {
379+
b.iter_with_setup(
380+
|| {
381+
// Setup: Create a fresh engine for each iteration
382+
let rules = rules_from_lists(&["data/brave/brave-main-list.txt"]);
383+
Engine::from_rules_parametrised(rules, Default::default(), false, true)
384+
},
385+
|engine| {
386+
// Measured: Single request check with fresh engine
387+
bench_rule_matching_browserlike(&engine, &requests)
388+
}
389+
)
355390
});
356391

357392
group.finish();
@@ -363,6 +398,7 @@ criterion_group!(
363398
rule_match_parsed_el,
364399
rule_match_parsed_elep_slimlist,
365400
rule_match_browserlike_comparable,
401+
rule_match_first_request,
366402
serialization,
367403
deserialization
368404
);

benches/bench_rules.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,6 @@ fn list_parse(c: &mut Criterion) {
8484
fn get_blocker(rules: impl IntoIterator<Item=impl AsRef<str>>) -> Blocker {
8585
let (network_filters, _) = adblock::lists::parse_filters(rules, false, Default::default());
8686

87-
println!("Got {} network filters", network_filters.len());
88-
8987
let blocker_options = BlockerOptions {
9088
enable_optimizations: true,
9189
};
@@ -99,12 +97,16 @@ fn blocker_new(c: &mut Criterion) {
9997
group.throughput(Throughput::Elements(1));
10098
group.sample_size(10);
10199

102-
let rules: Vec<_> = rules_from_lists(&[
100+
let easylist_rules: Vec<_> = rules_from_lists(&[
103101
"data/easylist.to/easylist/easylist.txt",
104102
"data/easylist.to/easylist/easyprivacy.txt",
105103
]).collect();
104+
let brave_list_rules: Vec<_> = rules_from_lists(&[
105+
"data/brave/brave-main-list.txt",
106+
]).collect();
106107

107-
group.bench_function("el+ep", move |b| b.iter(|| get_blocker(&rules)));
108+
group.bench_function("el+ep", move |b| b.iter(|| get_blocker(&easylist_rules)));
109+
group.bench_function("brave-list", move |b| b.iter(|| get_blocker(&brave_list_rules)));
108110

109111
group.finish();
110112
}

data/brave/brave-main-list.txt

Lines changed: 179208 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)