Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimisations and `document` request and rule handling fixes #35

Merged
merged 10 commits into from Jun 28, 2019
Next

adds benching of API used in benchmarking integration for the lists i…

…n use
  • Loading branch information
AndriusA committed Jun 11, 2019
commit 69b7bdee4d40d9920ef38b52df9707c20463e25c
@@ -302,16 +302,12 @@ fn deserialization(c: &mut Criterion) {
);
}

fn rule_match_browserlike_elep(c: &mut Criterion) {

let rules = rules_from_lists(&vec![
String::from("data/easylist.to/easylist/easylist.txt"),
String::from("data/easylist.to/easylist/easyprivacy.txt"),
]);
fn rule_match_browserlike_comparable(c: &mut Criterion) {
let requests = load_requests();
let requests_len = requests.len() as u32;

let requests_parsed: Vec<(String, String, String, String, Option<bool>)> = requests.iter().map(|r| {
fn requests_parsed(requests: &[TestRequest]) -> Vec<(String, String, String, String, Option<bool>)> {
requests.iter().map(|r| {
let url_norm = r.url.to_ascii_lowercase();
let source_url_norm = r.frameUrl.to_ascii_lowercase();

@@ -343,20 +339,47 @@ fn rule_match_browserlike_elep(c: &mut Criterion) {
}
})
.filter_map(Result::ok)
.collect();
.collect::<Vec<_>>()
}

let elep_req = requests_parsed(&requests);
let el_req = elep_req.clone();
let slim = elep_req.clone();

c.bench(
"rule-match-browserlike",
Benchmark::new(
"el+ep",
move |b| {
let blocker = get_blocker(&rules);
let engine = Engine {
blocker
};
b.iter(|| bench_rule_matching_browserlike(&engine, &requests_parsed))
},
).throughput(Throughput::Elements(requests_len))
Benchmark::new("el+ep", move |b| {
let rules = rules_from_lists(&vec![
"data/easylist.to/easylist/easylist.txt".to_owned(),
"data/easylist.to/easylist/easyprivacy.txt".to_owned()
]);
let blocker = get_blocker(&rules);
let engine = Engine {
blocker
};
b.iter(|| bench_rule_matching_browserlike(&engine, &elep_req))
},)
.with_function("el", move |b| {
let rules = rules_from_lists(&vec![
"data/easylist.to/easylist/easylist.txt".to_owned(),
]);
let blocker = get_blocker(&rules);
let engine = Engine {
blocker
};
b.iter(|| bench_rule_matching_browserlike(&engine, &el_req))
},)
.with_function("slimlist", move |b| {
let rules = rules_from_lists(&vec![
"data/slim-list.txt".to_owned()
]);
let blocker = get_blocker(&rules);
let engine = Engine {
blocker
};
b.iter(|| bench_rule_matching_browserlike(&engine, &slim))
},)
.throughput(Throughput::Elements(requests_len))
.sample_size(10)
);
}
@@ -368,7 +391,7 @@ criterion_group!(
rule_match_slimlist_comparable,
rule_match,
rule_match_slim,
rule_match_browserlike_elep,
rule_match_browserlike_comparable,
serialization,
deserialization
);
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.