Skip to content

Commit d4c3462

Browse files
mess around with the benchmarks to get good codegen
1 parent 3600ae6 commit d4c3462

1 file changed

Lines changed: 22 additions & 12 deletions

File tree

src/test.rs

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -893,6 +893,7 @@ fn iter_ambiguity() {
893893
fn read_kmer_bench() {
894894
eprintln!("\nBench PackedSeq::read_kmer");
895895
for len in [100, 150, 200, 1000, 1_000_000] {
896+
let len = black_box(len);
896897
let x = vec![b'A'; len];
897898
let packed = PackedSeqVec::from_ascii(&x);
898899
let mut out = vec![];
@@ -926,6 +927,7 @@ fn push_ascii_1bit_bench() {
926927
let mut packed = BitSeqVec::default();
927928

928929
for len in [100, 150, 200, 1000, 1_000_000] {
930+
let len = black_box(len);
929931
// 1Gbp input.
930932
let rep = 1_000_000_000 / len;
931933
let mut ascii = AsciiSeqVec::random(len);
@@ -954,6 +956,7 @@ fn push_ascii_2bit_bench() {
954956
let mut packed = PackedSeqVec::default();
955957

956958
for len in [100, 150, 200, 1000, 1_000_000] {
959+
let len = black_box(len);
957960
// 1Gbp input.
958961
let rep = 1_000_000_000 / len;
959962
let mut ascii = AsciiSeqVec::random(len);
@@ -980,6 +983,7 @@ fn push_ascii_2bit_bench() {
980983
fn par_iter_bp_bench() {
981984
eprintln!("\nBench PackedSeq::par_iter_bp");
982985
for len in [100, 150, 200, 1000, 1_000_000] {
986+
let len = black_box(len);
983987
// 1Gbp input.
984988
let rep = 1_000_000_000 / len;
985989
let seq = PackedSeqVec::random(len);
@@ -1008,6 +1012,7 @@ fn par_iter_bp_buf_bench() {
10081012
let mut buf = [S::ZERO; 8];
10091013

10101014
for len in [100, 150, 200, 1000, 1_000_000] {
1015+
let len = black_box(len);
10111016
// 1Gbp input.
10121017
let rep = 1_000_000_000 / len;
10131018
let seq = PackedSeqVec::random(len);
@@ -1032,25 +1037,25 @@ fn par_iter_bp_buf_bench() {
10321037
#[ignore = "This is a benchmark, not a test"]
10331038
fn par_iter_bp_delayed_bench() {
10341039
eprintln!("\nBench PackedSeq::par_iter_bp_delayed");
1040+
let delay = black_box(Delay(27));
1041+
let mut sum = S::ZERO;
10351042
for len in [100, 150, 200, 1000, 1_000_000] {
1043+
let len = black_box(len);
10361044
// 1Gbp input.
10371045
let rep = 1_000_000_000 / len;
10381046
let seq = PackedSeqVec::random(len);
10391047

10401048
let start = std::time::Instant::now();
10411049
for _ in 0..rep {
1042-
let PaddedIt { it, .. } = seq.as_slice().par_iter_bp_delayed(1, Delay(27));
1043-
let mut sum = S::ZERO;
1044-
for x in it {
1045-
sum += x.0 + x.1;
1046-
}
1047-
black_box(sum);
1050+
let PaddedIt { it, .. } = seq.as_slice().par_iter_bp_delayed(1, delay);
1051+
it.for_each(|x| sum += x.0 + x.1);
10481052
}
10491053
eprintln!(
10501054
"Len {len:>7} => {:.03} Gbp/s",
10511055
start.elapsed().as_secs_f64().recip()
10521056
);
10531057
}
1058+
black_box(&sum);
10541059
}
10551060

10561061
#[test]
@@ -1060,17 +1065,21 @@ fn par_iter_bp_delayed_buf_bench() {
10601065

10611066
let mut buf = vec![];
10621067

1068+
let delay = black_box(Delay(27));
10631069
for len in [100, 150, 200, 1000, 1_000_000] {
1070+
let len = black_box(len);
10641071
// 1Gbp input.
10651072
let rep = 1_000_000_000 / len;
10661073
let seq = PackedSeqVec::random(len);
10671074

10681075
let start = std::time::Instant::now();
10691076
for _ in 0..rep {
1070-
let PaddedIt { it, .. } =
1071-
seq.as_slice()
1072-
.par_iter_bp_delayed_with_factor_and_buf(1, Delay(27), 1, &mut buf);
1073-
black_box(it.map(|(x, y)| x + y).sum::<u32x8>());
1077+
let PaddedIt { it, .. } = seq
1078+
.as_slice()
1079+
.par_iter_bp_delayed_with_factor_and_buf(1, delay, 1, &mut buf);
1080+
let mut sum = S::ZERO;
1081+
it.for_each(|x| sum += x.0 + x.1);
1082+
black_box(sum);
10741083
}
10751084
eprintln!(
10761085
"Len {len:>7} => {:.03} Gbp/s",
@@ -1084,23 +1093,24 @@ fn par_iter_bp_delayed_buf_bench() {
10841093
fn par_iter_kmer_ambiguity_bench() {
10851094
eprintln!("\nBench PackedSeq::par_iter_kmer_ambiguity");
10861095
let k = 31;
1096+
let mut sum = S::ZERO;
10871097
for len in [100, 150, 200, 1000, 1_000_000] {
1098+
let len = black_box(len);
10881099
// 1Gbp input.
10891100
let rep = 1_000_000_000 / len;
10901101
let seq = BitSeqVec::random(len, 0.01);
10911102

10921103
let start = std::time::Instant::now();
10931104
for _ in 0..rep {
10941105
let PaddedIt { it, .. } = seq.as_slice().par_iter_kmer_ambiguity(k, k - 1, 0);
1095-
let mut sum = S::ZERO;
10961106
for x in it {
10971107
sum += x;
10981108
}
1099-
black_box(&sum);
11001109
}
11011110
eprintln!(
11021111
"Len {len:>7} => {:.03} Gbp/s",
11031112
start.elapsed().as_secs_f64().recip()
11041113
);
11051114
}
1115+
black_box(&sum);
11061116
}

0 commit comments

Comments
 (0)