myers-diff-0.3.0.0: bench-weigh/Main.hs
{-# LANGUAGE CPP #-}
module Main (main) where
import qualified Data.Diff.Myers as VM
import qualified Data.List as L
import Data.String.Interpolate
import Data.Text as T
import qualified Data.Vector.Unboxed as VU
import TestLib.Benchmarking
import TestLib.Instances ()
import Weigh
#ifdef DIFF
import qualified Data.Diff.Diff as DD
#endif
testFunc :: Int -> [(String, String, Text, Text, VU.Vector Char, VU.Vector Char)] -> Weigh ()
testFunc inputSize samples = wgroup [i|#{inputSize} characters|] $ do
func' "myers-diff-vector" (L.map (\(_, _, _, _, initialVector, finalVector) -> (VM.diffVectors initialVector finalVector))) samples
func' "myers-diff-string" (L.map (\(initialString, finalString, _, _, _, _) -> (VM.diffStrings initialString finalString))) samples
func' "myers-diff-text" (L.map (\(_, _, initialText, finalText, _, _) -> (VM.diffTexts initialText finalText))) samples
#ifdef DIFF
func' "Diff" (L.map (\(initialString, finalString, _, _, _, _) -> (DD.diff initialString finalString))) samples
#endif
main :: IO ()
main = do
insertSamples10 <- getPairSingleInsert 100 10
insertSamples100 <- getPairSingleInsert 100 100
insertSamples1000 <- getPairSingleInsert 100 1000
insertSamples10000 <- getPairSingleInsert 100 10000
insertSamples100000 <- getPairSingleInsert 100 100000
deleteSamples10 <- getPairSingleDelete 100 10
deleteSamples100 <- getPairSingleDelete 100 100
deleteSamples1000 <- getPairSingleDelete 100 1000
deleteSamples10000 <- getPairSingleDelete 100 10000
deleteSamples100000 <- getPairSingleDelete 100 100000
mainWith $ do
setFormat Markdown
wgroup [i|Single insert (100 samples each)|] $ do
testFunc 10 insertSamples10
testFunc 100 insertSamples100
testFunc 1000 insertSamples1000
testFunc 10000 insertSamples10000
testFunc 100000 insertSamples100000
wgroup [i|Single delete (100 samples each)|] $ do
testFunc 10 deleteSamples10
testFunc 100 deleteSamples100
testFunc 1000 deleteSamples1000
testFunc 10000 deleteSamples10000
testFunc 100000 deleteSamples100000