Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add benchmarks for Combinations iterator of for return Vec sizes of 1, 2, 3, 4 and 14. Renames TupleCombinations tests to tuple_comb_* for clarity in test results.
- Loading branch information
Showing
2 changed files
with
115 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
#![feature(test)] | ||
|
||
extern crate test; | ||
extern crate itertools; | ||
|
||
use test::{black_box, Bencher}; | ||
use itertools::Itertools; | ||
|
||
// approximate 100_000 iterations for each combination | ||
const N1: usize = 100_000; | ||
const N2: usize = 448; | ||
const N3: usize = 86; | ||
const N4: usize = 41; | ||
const N14: usize = 21; | ||
|
||
#[bench] | ||
fn combs_for01(b: &mut Bencher) { | ||
b.iter(|| { | ||
for i in 0..N1 { | ||
black_box(vec![i]); | ||
} | ||
}); | ||
} | ||
|
||
#[bench] | ||
fn combs_for02(b: &mut Bencher) { | ||
b.iter(|| { | ||
for i in 0..N2 { | ||
for j in (i + 1)..N2 { | ||
black_box(vec![i, j]); | ||
} | ||
} | ||
}); | ||
} | ||
|
||
#[bench] | ||
fn combs_for03(b: &mut Bencher) { | ||
b.iter(|| { | ||
for i in 0..N3 { | ||
for j in (i + 1)..N3 { | ||
for k in (j + 1)..N3 { | ||
black_box(vec![i, j, k]); | ||
} | ||
} | ||
} | ||
}); | ||
} | ||
|
||
#[bench] | ||
fn combs_for04(b: &mut Bencher) { | ||
b.iter(|| { | ||
for i in 0..N4 { | ||
for j in (i + 1)..N4 { | ||
for k in (j + 1)..N4 { | ||
for l in (k + 1)..N4 { | ||
black_box(vec![i, j, k, l]); | ||
} | ||
} | ||
} | ||
} | ||
}); | ||
} | ||
|
||
#[bench] | ||
fn combs_c01(b: &mut Bencher) { | ||
b.iter(|| { | ||
for combo in (0..N1).combinations(1) { | ||
black_box(combo); | ||
} | ||
}); | ||
} | ||
|
||
#[bench] | ||
fn combs_c02(b: &mut Bencher) { | ||
b.iter(|| { | ||
for combo in (0..N2).combinations(2) { | ||
black_box(combo); | ||
} | ||
}); | ||
} | ||
|
||
#[bench] | ||
fn combs_c03(b: &mut Bencher) { | ||
b.iter(|| { | ||
for combo in (0..N3).combinations(3) { | ||
black_box(combo); | ||
} | ||
}); | ||
} | ||
|
||
#[bench] | ||
fn combs_c04(b: &mut Bencher) { | ||
b.iter(|| { | ||
for combo in (0..N4).combinations(4) { | ||
black_box(combo); | ||
} | ||
}); | ||
} | ||
|
||
#[bench] | ||
fn combs_c14(b: &mut Bencher) { | ||
b.iter(|| { | ||
for combo in (0..N14).combinations(14) { | ||
black_box(combo); | ||
} | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters