From cf46a38bdedee77c69a1770aba372debd3c3e1f3 Mon Sep 17 00:00:00 2001
From: Martin Larralde <martin.larralde@embl.de>
Date: Mon, 24 Jun 2024 13:45:00 +0200
Subject: [PATCH] Reorganize all benchmarks in `lightmotif` crate

---
 lightmotif/benches/encode.rs    |  20 ++---
 lightmotif/benches/score.rs     | 145 +++++++++++++++++---------------
 lightmotif/benches/stripe.rs    |  20 ++---
 lightmotif/benches/threshold.rs |  24 +++---
 4 files changed, 108 insertions(+), 101 deletions(-)

diff --git a/lightmotif/benches/encode.rs b/lightmotif/benches/encode.rs
index 147b048..d1f4b1a 100644
--- a/lightmotif/benches/encode.rs
+++ b/lightmotif/benches/encode.rs
@@ -23,34 +23,34 @@ mod dna {
     }
 
     #[bench]
-    fn bench_generic(bencher: &mut test::Bencher) {
+    fn generic(bencher: &mut test::Bencher) {
         let pli = Pipeline::generic();
         bench(bencher, &pli);
     }
 
     #[bench]
-    fn bench_dispatch(bencher: &mut test::Bencher) {
+    fn dispatch(bencher: &mut test::Bencher) {
         let pli = Pipeline::dispatch();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "sse2")]
     #[bench]
-    fn bench_sse2(bencher: &mut test::Bencher) {
+    fn sse2(bencher: &mut test::Bencher) {
         let pli = Pipeline::sse2().unwrap();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "avx2")]
     #[bench]
-    fn bench_avx2(bencher: &mut test::Bencher) {
+    fn avx2(bencher: &mut test::Bencher) {
         let pli = Pipeline::avx2().unwrap();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "neon")]
     #[bench]
-    fn bench_neon(bencher: &mut test::Bencher) {
+    fn neon(bencher: &mut test::Bencher) {
         let pli = Pipeline::neon().unwrap();
         bench(bencher, &pli);
     }
@@ -72,34 +72,34 @@ mod protein {
     }
 
     #[bench]
-    fn bench_generic(bencher: &mut test::Bencher) {
+    fn generic(bencher: &mut test::Bencher) {
         let pli = Pipeline::generic();
         bench(bencher, &pli);
     }
 
     #[bench]
-    fn bench_dispatch(bencher: &mut test::Bencher) {
+    fn dispatch(bencher: &mut test::Bencher) {
         let pli = Pipeline::dispatch();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "sse2")]
     #[bench]
-    fn bench_sse2(bencher: &mut test::Bencher) {
+    fn sse2(bencher: &mut test::Bencher) {
         let pli = Pipeline::sse2().unwrap();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "avx2")]
     #[bench]
-    fn bench_avx2(bencher: &mut test::Bencher) {
+    fn avx2(bencher: &mut test::Bencher) {
         let pli = Pipeline::avx2().unwrap();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "neon")]
     #[bench]
-    fn bench_neon(bencher: &mut test::Bencher) {
+    fn neon(bencher: &mut test::Bencher) {
         let pli = Pipeline::neon().unwrap();
         bench(bencher, &pli);
     }
diff --git a/lightmotif/benches/score.rs b/lightmotif/benches/score.rs
index a1fee26..4f00440 100644
--- a/lightmotif/benches/score.rs
+++ b/lightmotif/benches/score.rs
@@ -46,41 +46,41 @@ mod dna {
         }
 
         #[bench]
-        fn bench_generic(bencher: &mut test::Bencher) {
+        fn generic(bencher: &mut test::Bencher) {
             let pli = Pipeline::generic();
             bench::<U32, _>(bencher, &pli);
         }
 
         #[bench]
-        fn bench_dispatch(bencher: &mut test::Bencher) {
+        fn dispatch(bencher: &mut test::Bencher) {
             let pli = Pipeline::dispatch();
             bench(bencher, &pli);
         }
 
         #[cfg(target_feature = "sse2")]
         #[bench]
-        fn bench_sse2(bencher: &mut test::Bencher) {
+        fn sse2(bencher: &mut test::Bencher) {
             let pli = Pipeline::sse2().unwrap();
             bench::<U16, _>(bencher, &pli);
         }
 
         #[cfg(target_feature = "sse2")]
         #[bench]
-        fn bench_sse2_32(bencher: &mut test::Bencher) {
+        fn sse2_32(bencher: &mut test::Bencher) {
             let pli = Pipeline::sse2().unwrap();
             bench::<U32, _>(bencher, &pli);
         }
 
         #[cfg(target_feature = "avx2")]
         #[bench]
-        fn bench_avx2(bencher: &mut test::Bencher) {
+        fn avx2(bencher: &mut test::Bencher) {
             let pli = Pipeline::avx2().unwrap();
             bench(bencher, &pli);
         }
 
         #[cfg(target_feature = "neon")]
         #[bench]
-        fn bench_neon(bencher: &mut test::Bencher) {
+        fn neon(bencher: &mut test::Bencher) {
             let pli = Pipeline::neon().unwrap();
             bench::<U16, _>(bencher, &pli);
         }
@@ -112,41 +112,41 @@ mod dna {
         }
 
         #[bench]
-        fn bench_generic(bencher: &mut test::Bencher) {
+        fn generic(bencher: &mut test::Bencher) {
             let pli = Pipeline::generic();
             bench::<U32, _>(bencher, &pli);
         }
 
         #[bench]
-        fn bench_dispatch(bencher: &mut test::Bencher) {
+        fn dispatch(bencher: &mut test::Bencher) {
             let pli = Pipeline::dispatch();
             bench(bencher, &pli);
         }
 
         #[cfg(target_feature = "sse2")]
         #[bench]
-        fn bench_sse2(bencher: &mut test::Bencher) {
+        fn sse2(bencher: &mut test::Bencher) {
             let pli = Pipeline::sse2().unwrap();
             bench::<U16, _>(bencher, &pli);
         }
 
         #[cfg(target_feature = "sse2")]
         #[bench]
-        fn bench_sse2_32(bencher: &mut test::Bencher) {
+        fn sse2_32(bencher: &mut test::Bencher) {
             let pli = Pipeline::sse2().unwrap();
             bench::<U32, _>(bencher, &pli);
         }
 
         #[cfg(target_feature = "avx2")]
         #[bench]
-        fn bench_avx2(bencher: &mut test::Bencher) {
+        fn avx2(bencher: &mut test::Bencher) {
             let pli = Pipeline::avx2().unwrap();
             bench(bencher, &pli);
         }
 
         #[cfg(target_feature = "neon")]
         #[bench]
-        fn bench_neon(bencher: &mut test::Bencher) {
+        fn neon(bencher: &mut test::Bencher) {
             let pli = Pipeline::neon().unwrap();
             bench::<U16, _>(bencher, &pli);
         }
@@ -160,68 +160,75 @@ mod protein {
 
     const SEQUENCE: &str = include_str!("abyB1.txt");
 
-    fn bench<C: StrictlyPositive, P: Score<f32, Protein, C>>(bencher: &mut test::Bencher, pli: &P) {
-        let encoded = EncodedSequence::<Protein>::encode(SEQUENCE).unwrap();
-        let mut striped = Pipeline::generic().stripe(encoded);
-
-        let cm = CountMatrix::<Protein>::from_sequences([
-            EncodedSequence::encode("SFKELGFDSLTAVELRNRLAAAT").unwrap(),
-            EncodedSequence::encode("AFKELGFDSLAAIQLRNRLLADV").unwrap(),
-            EncodedSequence::encode("PSRRLGFDSLTAVELRNQLAAST").unwrap(),
-            EncodedSequence::encode("AFREIGFDSLTAVELRNRLGAAA").unwrap(),
-            EncodedSequence::encode("SLMEEGLDSLAAVELGGTLQRDT").unwrap(),
-            EncodedSequence::encode("GFFDLGMDSLMAVELRRRIEQGV").unwrap(),
-        ])
-        .unwrap();
-        let pbm = cm.to_freq(0.1);
-        let pssm = pbm.to_scoring(None);
-
-        striped.configure(&pssm);
-        let mut scores = StripedScores::empty();
-        scores.resize(striped.matrix().rows(), striped.len());
-        bencher.bytes = SEQUENCE.len() as u64;
-        bencher.iter(|| {
-            test::black_box(pli.score_into(&pssm, &striped, &mut scores));
-        });
-    }
+    mod f32 {
+        use super::*;
 
-    #[bench]
-    fn bench_generic(bencher: &mut test::Bencher) {
-        let pli = Pipeline::generic();
-        bench::<U32, _>(bencher, &pli);
-    }
+        fn bench<C: StrictlyPositive, P: Score<f32, Protein, C>>(
+            bencher: &mut test::Bencher,
+            pli: &P,
+        ) {
+            let encoded = EncodedSequence::<Protein>::encode(SEQUENCE).unwrap();
+            let mut striped = Pipeline::generic().stripe(encoded);
 
-    #[bench]
-    fn bench_dispatch(bencher: &mut test::Bencher) {
-        let pli = Pipeline::dispatch();
-        bench(bencher, &pli);
-    }
+            let cm = CountMatrix::<Protein>::from_sequences([
+                EncodedSequence::encode("SFKELGFDSLTAVELRNRLAAAT").unwrap(),
+                EncodedSequence::encode("AFKELGFDSLAAIQLRNRLLADV").unwrap(),
+                EncodedSequence::encode("PSRRLGFDSLTAVELRNQLAAST").unwrap(),
+                EncodedSequence::encode("AFREIGFDSLTAVELRNRLGAAA").unwrap(),
+                EncodedSequence::encode("SLMEEGLDSLAAVELGGTLQRDT").unwrap(),
+                EncodedSequence::encode("GFFDLGMDSLMAVELRRRIEQGV").unwrap(),
+            ])
+            .unwrap();
+            let pbm = cm.to_freq(0.1);
+            let pssm = pbm.to_scoring(None);
 
-    #[cfg(target_feature = "sse2")]
-    #[bench]
-    fn bench_sse2(bencher: &mut test::Bencher) {
-        let pli = Pipeline::sse2().unwrap();
-        bench::<U16, _>(bencher, &pli);
-    }
+            striped.configure(&pssm);
+            let mut scores = StripedScores::empty();
+            scores.resize(striped.matrix().rows(), striped.len());
+            bencher.bytes = SEQUENCE.len() as u64;
+            bencher.iter(|| {
+                test::black_box(pli.score_into(&pssm, &striped, &mut scores));
+            });
+        }
 
-    #[cfg(target_feature = "sse2")]
-    #[bench]
-    fn bench_sse2_32(bencher: &mut test::Bencher) {
-        let pli = Pipeline::sse2().unwrap();
-        bench::<U32, _>(bencher, &pli);
-    }
+        #[bench]
+        fn generic(bencher: &mut test::Bencher) {
+            let pli = Pipeline::generic();
+            bench::<U32, _>(bencher, &pli);
+        }
 
-    #[cfg(target_feature = "avx2")]
-    #[bench]
-    fn bench_avx2(bencher: &mut test::Bencher) {
-        let pli = Pipeline::avx2().unwrap();
-        bench(bencher, &pli);
-    }
+        #[bench]
+        fn dispatch(bencher: &mut test::Bencher) {
+            let pli = Pipeline::dispatch();
+            bench(bencher, &pli);
+        }
+
+        #[cfg(target_feature = "sse2")]
+        #[bench]
+        fn sse2(bencher: &mut test::Bencher) {
+            let pli = Pipeline::sse2().unwrap();
+            bench::<U16, _>(bencher, &pli);
+        }
+
+        #[cfg(target_feature = "sse2")]
+        #[bench]
+        fn sse2_32(bencher: &mut test::Bencher) {
+            let pli = Pipeline::sse2().unwrap();
+            bench::<U32, _>(bencher, &pli);
+        }
 
-    #[cfg(target_feature = "neon")]
-    #[bench]
-    fn bench_neon(bencher: &mut test::Bencher) {
-        let pli = Pipeline::neon().unwrap();
-        bench::<U16, _>(bencher, &pli);
+        #[cfg(target_feature = "avx2")]
+        #[bench]
+        fn avx2(bencher: &mut test::Bencher) {
+            let pli = Pipeline::avx2().unwrap();
+            bench(bencher, &pli);
+        }
+
+        #[cfg(target_feature = "neon")]
+        #[bench]
+        fn neon(bencher: &mut test::Bencher) {
+            let pli = Pipeline::neon().unwrap();
+            bench::<U16, _>(bencher, &pli);
+        }
     }
 }
diff --git a/lightmotif/benches/stripe.rs b/lightmotif/benches/stripe.rs
index 61c055c..3ab0a21 100644
--- a/lightmotif/benches/stripe.rs
+++ b/lightmotif/benches/stripe.rs
@@ -28,34 +28,34 @@ mod dna {
     }
 
     #[bench]
-    fn bench_generic(bencher: &mut test::Bencher) {
+    fn generic(bencher: &mut test::Bencher) {
         let pli = Pipeline::generic();
         bench(bencher, &pli);
     }
 
     #[bench]
-    fn bench_dispatch(bencher: &mut test::Bencher) {
+    fn dispatch(bencher: &mut test::Bencher) {
         let pli = Pipeline::dispatch();
         bench(bencher, &pli);
     }
 
     // #[cfg(target_feature = "sse2")]
     // #[bench]
-    // fn bench_sse2(bencher: &mut test::Bencher) {
+    // fn sse2(bencher: &mut test::Bencher) {
     //     let pli = Pipeline::sse2().unwrap();
     //     bench(bencher, &pli);
     // }
 
     #[cfg(target_feature = "avx2")]
     #[bench]
-    fn bench_avx2(bencher: &mut test::Bencher) {
+    fn avx2(bencher: &mut test::Bencher) {
         let pli = Pipeline::avx2().unwrap();
         bench(bencher, &pli);
     }
 
     // #[cfg(target_feature = "neon")]
     // #[bench]
-    // fn bench_neon(bencher: &mut test::Bencher) {
+    // fn neon(bencher: &mut test::Bencher) {
     //     let pli = Pipeline::neon().unwrap();
     //     bench(bencher, &pli);
     // }
@@ -80,34 +80,34 @@ mod protein {
     }
 
     #[bench]
-    fn bench_generic(bencher: &mut test::Bencher) {
+    fn generic(bencher: &mut test::Bencher) {
         let pli = Pipeline::generic();
         bench(bencher, &pli);
     }
 
     #[bench]
-    fn bench_dispatch(bencher: &mut test::Bencher) {
+    fn dispatch(bencher: &mut test::Bencher) {
         let pli = Pipeline::dispatch();
         bench(bencher, &pli);
     }
 
     // #[cfg(target_feature = "sse2")]
     // #[bench]
-    // fn bench_sse2(bencher: &mut test::Bencher) {
+    // fn sse2(bencher: &mut test::Bencher) {
     //     let pli = Pipeline::sse2().unwrap();
     //     bench(bencher, &pli);
     // }
 
     #[cfg(target_feature = "avx2")]
     #[bench]
-    fn bench_avx2(bencher: &mut test::Bencher) {
+    fn avx2(bencher: &mut test::Bencher) {
         let pli = Pipeline::avx2().unwrap();
         bench(bencher, &pli);
     }
 
     // #[cfg(target_feature = "neon")]
     // #[bench]
-    // fn bench_neon(bencher: &mut test::Bencher) {
+    // fn neon(bencher: &mut test::Bencher) {
     //     let pli = Pipeline::neon().unwrap();
     //     bench(bencher, &pli);
     // }
diff --git a/lightmotif/benches/threshold.rs b/lightmotif/benches/threshold.rs
index 1e530e2..923c84b 100644
--- a/lightmotif/benches/threshold.rs
+++ b/lightmotif/benches/threshold.rs
@@ -47,41 +47,41 @@ mod f32 {
     }
 
     #[bench]
-    fn bench_generic(bencher: &mut test::Bencher) {
+    fn generic(bencher: &mut test::Bencher) {
         let pli = Pipeline::generic();
         bench::<U32, _>(bencher, &pli);
     }
 
     #[bench]
-    fn bench_dispatch(bencher: &mut test::Bencher) {
+    fn dispatch(bencher: &mut test::Bencher) {
         let pli = Pipeline::dispatch();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "sse2")]
     #[bench]
-    fn bench_sse2(bencher: &mut test::Bencher) {
+    fn sse2(bencher: &mut test::Bencher) {
         let pli = Pipeline::sse2().unwrap();
         bench::<U16, _>(bencher, &pli);
     }
 
     #[cfg(target_feature = "sse2")]
     #[bench]
-    fn bench_sse2_32(bencher: &mut test::Bencher) {
+    fn sse2_32(bencher: &mut test::Bencher) {
         let pli = Pipeline::sse2().unwrap();
         bench::<U32, _>(bencher, &pli);
     }
 
     #[cfg(target_feature = "avx2")]
     #[bench]
-    fn bench_avx2(bencher: &mut test::Bencher) {
+    fn avx2(bencher: &mut test::Bencher) {
         let pli = Pipeline::avx2().unwrap();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "neon")]
     #[bench]
-    fn bench_neon(bencher: &mut test::Bencher) {
+    fn neon(bencher: &mut test::Bencher) {
         let pli = Pipeline::neon().unwrap();
         bench::<U16, _>(bencher, &pli);
     }
@@ -128,41 +128,41 @@ mod u8 {
     }
 
     #[bench]
-    fn bench_generic(bencher: &mut test::Bencher) {
+    fn generic(bencher: &mut test::Bencher) {
         let pli = Pipeline::generic();
         bench::<U32, _>(bencher, &pli);
     }
 
     #[bench]
-    fn bench_dispatch(bencher: &mut test::Bencher) {
+    fn dispatch(bencher: &mut test::Bencher) {
         let pli = Pipeline::dispatch();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "sse2")]
     #[bench]
-    fn bench_sse2(bencher: &mut test::Bencher) {
+    fn sse2(bencher: &mut test::Bencher) {
         let pli = Pipeline::sse2().unwrap();
         bench::<U16, _>(bencher, &pli);
     }
 
     #[cfg(target_feature = "sse2")]
     #[bench]
-    fn bench_sse2_32(bencher: &mut test::Bencher) {
+    fn sse2_32(bencher: &mut test::Bencher) {
         let pli = Pipeline::sse2().unwrap();
         bench::<U32, _>(bencher, &pli);
     }
 
     #[cfg(target_feature = "avx2")]
     #[bench]
-    fn bench_avx2(bencher: &mut test::Bencher) {
+    fn avx2(bencher: &mut test::Bencher) {
         let pli = Pipeline::avx2().unwrap();
         bench(bencher, &pli);
     }
 
     #[cfg(target_feature = "neon")]
     #[bench]
-    fn bench_neon(bencher: &mut test::Bencher) {
+    fn neon(bencher: &mut test::Bencher) {
         let pli = Pipeline::neon().unwrap();
         bench::<U16, _>(bencher, &pli);
     }
-- 
GitLab