Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions benches/entry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,25 @@ use criterion::criterion_main;
mod group;
mod perm;

use group::bruteforce_elements::bruteforce;
use group::orbit;
use group::orbit::{
factored_transversal::factored_transversal_impl, orbit_impl, transversal::transversal_impl,
use group::{
bruteforce_elements::bruteforce,
orbit::{
self,
factored_transversal::factored_transversal_impl,
orbit_impl,
transversal::transversal_impl,
},
};

use group::stabilizer_chain::{selector::selector, stabchain};
use group::stabilizer_chain::{
selector::selector,
stabchain,
};

use perm::{comparison::cmp, permutation};
use perm::{
comparison::cmp,
permutation,
};

criterion_main!(
permutation,
Expand Down
12 changes: 6 additions & 6 deletions benches/group/bruteforce_elements.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
use criterion::{criterion_group, BenchmarkId, Criterion};
use criterion::{
criterion_group,
BenchmarkId,
Criterion,
};
const RANGE_OF_VALUES: [usize; 4] = [8, 16, 32, 64];
#[allow(deprecated)]
use stabchain::group::brute_force::group_elements;
Expand Down Expand Up @@ -36,8 +40,4 @@ fn brute_force_vs_orbit_cyclic(c: &mut Criterion) {
group.finish();
}

criterion_group!(
bruteforce,
brute_force_vs_orbit_cyclic,
brute_force_vs_orbit_symmetric
);
criterion_group!(bruteforce, brute_force_vs_orbit_cyclic, brute_force_vs_orbit_symmetric);
12 changes: 9 additions & 3 deletions benches/group/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,16 @@ pub mod bruteforce_elements;
pub mod orbit;
pub mod stabilizer_chain;

use criterion::{criterion_group, BenchmarkId, Criterion};
use criterion::{
criterion_group,
BenchmarkId,
Criterion,
};
const RANGE_OF_VALUES: [usize; 4] = [8, 16, 32, 64];
use stabchain::group::orbit::transversal::Transversal;
use stabchain::group::Group;
use stabchain::group::{
orbit::transversal::Transversal,
Group,
};

// Comparing different methods of obtaining an orbit ---------------------------

Expand Down
29 changes: 17 additions & 12 deletions benches/group/orbit/factored_transversal.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
use criterion::{criterion_group, BenchmarkId, Criterion};
use criterion::{
criterion_group,
BenchmarkId,
Criterion,
};

const RANGE_OF_VALUES: [usize; 4] = [8, 16, 32, 64];

use stabchain::group::orbit::transversal::factored_transversal::{
factored_transversal, factored_transversal_complete_opt,
use stabchain::{
group::{
orbit::transversal::factored_transversal::{
factored_transversal,
factored_transversal_complete_opt,
},
Group,
},
perm::actions::SimpleApplication,
};
use stabchain::group::Group;
use stabchain::perm::actions::SimpleApplication;

// Comparing orbit optimizations

fn transversal_vs_optmized_transversal_complete(c: &mut Criterion) {
let mut group =
c.benchmark_group("group__orbit__f_transversal_vs_optmized_f_transversal_complete");
let mut group = c.benchmark_group("group__orbit__f_transversal_vs_optmized_f_transversal_complete");
for i in RANGE_OF_VALUES.iter() {
group.bench_with_input(BenchmarkId::new("transversal", i), i, |b, i| {
let g = Group::symmetric(*i);
Expand All @@ -27,9 +35,7 @@ fn transversal_vs_optmized_transversal_complete(c: &mut Criterion) {
}

fn transversal_vs_optmized_transversal_complete_many_generators(c: &mut Criterion) {
let mut group = c.benchmark_group(
"group__orbit__f_transversal_vs_optmized_f_transversal_complete_many_gens",
);
let mut group = c.benchmark_group("group__orbit__f_transversal_vs_optmized_f_transversal_complete_many_gens");
for i in RANGE_OF_VALUES.iter() {
group.bench_with_input(BenchmarkId::new("transversal", i), i, |b, i| {
let g = Group::alternating(*i);
Expand All @@ -46,8 +52,7 @@ fn transversal_vs_optmized_transversal_complete_many_generators(c: &mut Criterio
fn transversal_vs_optmized_transversal_uncomplete(c: &mut Criterion) {
use stabchain::group::utils::copies_of_cyclic;

let mut group =
c.benchmark_group("group__orbit__f_transversal_vs_optmized_f_transversal_uncomplete");
let mut group = c.benchmark_group("group__orbit__f_transversal_vs_optmized_f_transversal_uncomplete");
for i in RANGE_OF_VALUES.iter() {
group.bench_with_input(BenchmarkId::new("transversal", i), i, |b, i| {
let g = copies_of_cyclic(&[*i, 20, 20]);
Expand Down
19 changes: 15 additions & 4 deletions benches/group/orbit/mod.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
pub mod factored_transversal;
pub mod transversal;

use criterion::{criterion_group, BenchmarkId, Criterion};
use criterion::{
criterion_group,
BenchmarkId,
Criterion,
};

const RANGE_OF_VALUES: [usize; 4] = [8, 16, 32, 64];

use stabchain::group::orbit::{orbit, orbit_complete_opt};
use stabchain::group::Group;
use stabchain::perm::actions::SimpleApplication;
use stabchain::{
group::{
orbit::{
orbit,
orbit_complete_opt,
},
Group,
},
perm::actions::SimpleApplication,
};

// Comparing orbit optimizations

Expand Down
25 changes: 16 additions & 9 deletions benches/group/orbit/transversal.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
use criterion::{criterion_group, BenchmarkId, Criterion};
use criterion::{
criterion_group,
BenchmarkId,
Criterion,
};

const RANGE_OF_VALUES: [usize; 4] = [8, 16, 32, 64];

use stabchain::group::orbit::transversal::simple_transversal::{
transversal, transversal_complete_opt,
use stabchain::{
group::{
orbit::transversal::simple_transversal::{
transversal,
transversal_complete_opt,
},
Group,
},
perm::actions::SimpleApplication,
};
use stabchain::group::Group;
use stabchain::perm::actions::SimpleApplication;

// Comparing orbit optimizations

Expand All @@ -26,8 +35,7 @@ fn transversal_vs_optmized_transversal_complete(c: &mut Criterion) {
}

fn transversal_vs_optmized_transversal_complete_many_generators(c: &mut Criterion) {
let mut group =
c.benchmark_group("group__orbit__transversal_vs_optmized_transversal_complete_many_gens");
let mut group = c.benchmark_group("group__orbit__transversal_vs_optmized_transversal_complete_many_gens");
for i in RANGE_OF_VALUES.iter() {
group.bench_with_input(BenchmarkId::new("transversal", i), i, |b, i| {
let g = Group::alternating(*i);
Expand All @@ -44,8 +52,7 @@ fn transversal_vs_optmized_transversal_complete_many_generators(c: &mut Criterio
fn transversal_vs_optmized_transversal_uncomplete(c: &mut Criterion) {
use stabchain::group::utils::copies_of_cyclic;

let mut group =
c.benchmark_group("group__orbit__transversal_vs_optmized_transversal_uncomplete");
let mut group = c.benchmark_group("group__orbit__transversal_vs_optmized_transversal_uncomplete");
for i in RANGE_OF_VALUES.iter() {
group.bench_with_input(BenchmarkId::new("transversal", i), i, |b, i| {
let g = copies_of_cyclic(&[*i, 20, 20]);
Expand Down
73 changes: 37 additions & 36 deletions benches/group/stabilizer_chain/mod.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,30 @@
pub mod selector;

use criterion::{criterion_group, BenchmarkId, Criterion};
use criterion::{
criterion_group,
BenchmarkId,
Criterion,
};
const RANGE_OF_VALUES: [usize; 5] = [8, 10, 16, 20, 32];
use rand::{Rng, SeedableRng};
use stabchain::group::stabchain::base::selectors::DefaultSelector;
use stabchain::group::stabchain::builder::random::parameters::RandomAlgoParameters;
use stabchain::group::stabchain::builder::*;
use stabchain::group::Group;
use stabchain::perm::actions::SimpleApplication;
use {
rand::{
Rng,
SeedableRng,
},
stabchain::{
group::{
stabchain::{
base::selectors::DefaultSelector,
builder::{
random::parameters::RandomAlgoParameters,
*,
},
},
Group,
},
perm::actions::SimpleApplication,
},
};

use num::BigUint;

Expand Down Expand Up @@ -47,18 +64,13 @@ fn stabchain_cyclic(c: &mut Criterion) {
bench_stabchain_impl!(group, "ift", i, (|i: &usize| Group::cyclic(*i)), || {
IftBuilderStrategy::new(SimpleApplication::default(), DefaultSelector::default())
});
bench_stabchain_impl!(
group,
"random_shallow",
i,
(|i: &usize| Group::cyclic(*i)),
|| RandomBuilderStrategyShallow::new_with_params(
bench_stabchain_impl!(group, "random_shallow", i, (|i: &usize| Group::cyclic(*i)), || {
RandomBuilderStrategyShallow::new_with_params(
SimpleApplication::default(),
DefaultSelector::default(),
RandomAlgoParameters::default()
.rng(rand_xorshift::XorShiftRng::from_seed(rng.gen()))
RandomAlgoParameters::default().rng(rand_xorshift::XorShiftRng::from_seed(rng.gen())),
)
);
});
bench_stabchain_impl_with_order!(
group,
"random_shallow_known_order",
Expand Down Expand Up @@ -112,28 +124,19 @@ fn stabchain_symmetric(c: &mut Criterion) {
let g = Group::symmetric(*i);
b.iter(|| g.stabchain())
});
bench_stabchain_impl!(
group,
"naive",
i,
(|i: &usize| Group::symmetric(*i)),
|| NaiveBuilderStrategy::new(SimpleApplication::default(), DefaultSelector::default())
);
bench_stabchain_impl!(group, "naive", i, (|i: &usize| Group::symmetric(*i)), || {
NaiveBuilderStrategy::new(SimpleApplication::default(), DefaultSelector::default())
});
bench_stabchain_impl!(group, "ift", i, (|i: &usize| Group::symmetric(*i)), || {
IftBuilderStrategy::new(SimpleApplication::default(), DefaultSelector::default())
});
bench_stabchain_impl!(
group,
"random_shallow",
i,
(|i: &usize| Group::symmetric(*i)),
|| RandomBuilderStrategyShallow::new_with_params(
bench_stabchain_impl!(group, "random_shallow", i, (|i: &usize| Group::symmetric(*i)), || {
RandomBuilderStrategyShallow::new_with_params(
SimpleApplication::default(),
DefaultSelector::default(),
RandomAlgoParameters::default()
.rng(rand_xorshift::XorShiftRng::from_seed(rng.gen())),
RandomAlgoParameters::default().rng(rand_xorshift::XorShiftRng::from_seed(rng.gen())),
)
);
});
bench_stabchain_impl!(
group,
"random_shallow_quick_test",
Expand Down Expand Up @@ -210,8 +213,7 @@ fn stabchain_direct_product_symm(c: &mut Criterion) {
|| RandomBuilderStrategyShallow::new_with_params(
SimpleApplication::default(),
DefaultSelector::default(),
RandomAlgoParameters::default()
.rng(rand_xorshift::XorShiftRng::from_seed(rng.gen())),
RandomAlgoParameters::default().rng(rand_xorshift::XorShiftRng::from_seed(rng.gen())),
)
);
bench_stabchain_impl!(
Expand Down Expand Up @@ -291,8 +293,7 @@ fn stabchain_copies_of_cyclic(c: &mut Criterion) {
|| RandomBuilderStrategyShallow::new_with_params(
SimpleApplication::default(),
DefaultSelector::default(),
RandomAlgoParameters::default()
.rng(rand_xorshift::XorShiftRng::from_seed(rng.gen())),
RandomAlgoParameters::default().rng(rand_xorshift::XorShiftRng::from_seed(rng.gen())),
)
);
bench_stabchain_impl!(
Expand Down
22 changes: 16 additions & 6 deletions benches/group/stabilizer_chain/selector.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
use criterion::{criterion_group, BenchmarkId, Criterion};
use criterion::{
criterion_group,
BenchmarkId,
Criterion,
};
const RANGE_OF_VALUES: [usize; 5] = [8, 10, 16, 20, 32];
use stabchain::group::stabchain::base::selectors::{FixedBaseSelector, LmpSelector};
use stabchain::group::Group;
use std::iter::FromIterator;
use {
stabchain::group::{
stabchain::base::selectors::{
FixedBaseSelector,
LmpSelector,
},
Group,
},
std::iter::FromIterator,
};

fn selector_comparison_cyclic(c: &mut Criterion) {
let mut group = c.benchmark_group("group__stabchain__ss__selector_comparison__cyclic");
Expand Down Expand Up @@ -45,8 +56,7 @@ fn selector_comparison_symmetric(c: &mut Criterion) {
}

fn selector_comparison_direct_product(c: &mut Criterion) {
let mut group =
c.benchmark_group("group__stabchain__ss__selector_comparison__product_symmetric");
let mut group = c.benchmark_group("group__stabchain__ss__selector_comparison__product_symmetric");
for i in RANGE_OF_VALUES.iter() {
group.bench_with_input(BenchmarkId::new("default", i), i, |b, i| {
let g = Group::product(&Group::symmetric(*i), &Group::symmetric(*i));
Expand Down
17 changes: 13 additions & 4 deletions benches/perm/comparison.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
use criterion::{criterion_group, BenchmarkId, Criterion};
use stabchain::perm::utils::random_permutation;
use {
criterion::{
criterion_group,
BenchmarkId,
Criterion,
},
stabchain::perm::utils::random_permutation,
};

use stabchain::perm::Permutation;

use stabchain::perm::impls::{
based::BasedPermutation, map::MapPermutation, standard::StandardPermutation,
sync::SyncPermutation, word::WordPermutation,
based::BasedPermutation,
map::MapPermutation,
standard::StandardPermutation,
sync::SyncPermutation,
word::WordPermutation,
};

const RANGE_OF_VALUES: [usize; 7] = [8, 16, 32, 64, 128, 256, 512];
Expand Down
Loading
Loading