adp-multi-0.1.0: benchmarks/Benchmarks.hs
import Criterion.Main
import ADP.Multi.Rewriting.ConstraintSolver as CS
import ADP.Multi.Rewriting.Explicit as EX
import ADP.Tests.RGExample as RG
import ADP.Tests.RGExampleDim2 as RG2
import ADP.Tests.Nussinov as Nuss
import ADP.Tests.NussinovExample as Nuss2
main :: IO ()
main = defaultMain
[
bgroup "compare explicit vs constraint solver range construction" [
bgroup "RG dim1+2" [
bench "explicit" $ nf (simple EX.determineYieldSize1 EX.constructRanges1 EX.determineYieldSize2) EX.constructRanges2,
bench "constraint solver" $ nf (simple CS.determineYieldSize1 CS.constructRanges1 CS.determineYieldSize2) CS.constructRanges2
],
bgroup "RG dim2" [
bench "explicit" $ nf (simple2 EX.determineYieldSize1 EX.constructRanges1 EX.determineYieldSize2) EX.constructRanges2,
bench "constraint solver" $ nf (simple2 CS.determineYieldSize1 CS.constructRanges1 CS.determineYieldSize2) CS.constructRanges2
]
],
bgroup "compare different nussinovs" [
bench "nussinov78 (adp)" $ nf (Nuss.nussinov78 Nuss.pairmax) longInp,
bench "nussinov78' (adp)" $ nf (Nuss.nussinov78' Nuss.pairmax) longInp,
bench "nussinov78 (adp-multi)" $ nf (Nuss2.nussinov78 EX.determineYieldSize1 EX.constructRanges1 Nuss2.pairmax) longInp
],
bgroup "compare different nussinovs (doubled size)" [
bench "nussinov78 (adp)" $ nf (Nuss.nussinov78 Nuss.pairmax) veryLongInp,
bench "nussinov78' (adp)" $ nf (Nuss.nussinov78' Nuss.pairmax) veryLongInp,
bench "nussinov78 (adp-multi)" $ nf (Nuss2.nussinov78 EX.determineYieldSize1 EX.constructRanges1 Nuss2.pairmax) veryLongInp
]
]
longInp = "ggcguaggcgccgugcuuuugcuccccgcgcgcuguuuuucucgcugacuuucagcgggcggaaaagccucggccugccgccuuccaccguucauucuagagcaaacaaaaaaugucagcu"
veryLongInp = longInp ++ longInp
simple yieldAlg1 rangeAlg1 yieldAlg2 rangeAlg2 =
RG.rgknot yieldAlg1 rangeAlg1 yieldAlg2 rangeAlg2 RG.maxBasepairs "agcgu"
simple2 yieldAlg1 rangeAlg1 yieldAlg2 rangeAlg2 =
RG2.rgknot yieldAlg1 rangeAlg1 yieldAlg2 rangeAlg2 RG2.maxBasepairs "agcgu"