packages feed

myers-diff-0.2.0.0: bench-weigh/Main.hs

{-# LANGUAGE CPP #-}

module Main (main) where

import qualified Data.Diff.Myers as VM
import Data.String
import Data.String.Interpolate
import Data.Text as T
import Data.Text.Encoding as T
import qualified Data.Vector.Unboxed as VU
import Data.Vector.Unboxed.Mutable as VUM
import TestLib.Instances ()
import Weigh

#ifdef DIFF_MYERS
import qualified Data.Diff.DiffMyers as DM
#endif


main :: IO ()
main = mainWith $ do
#ifdef DIFF_MYERS
  func "Diff" (\(x, y) -> DM.diff x y) (T.unpack file1, T.unpack file2)
#endif

  func "Vector" (\(x, y) -> VM.diffTextsToChangeEvents x y) (file1, file2)

  -- value "file1 vector" (force (VU.generate (T.length file1) (\i -> T.index file1 i)))
  -- value "file2 vector" (force (VU.generate (T.length file2) (\i -> T.index file2 i)))

  -- value "file1" file1
  -- value "file2" file2

  value "file2 string" (T.unpack file2)
  value "file2 bytes" (T.encodeUtf8 file2)

  action "file2 vector" (VUM.generate (T.length file2) (\i -> T.index file2 i))



file1 :: Text
file1 =
  [__i|foo = 42
       :t foo

       homophones <- readFile "homophones.list"

       putStrLn "HI"

       abc

       import Data.Aeson as A

       -- | Here's a nice comment on bar
       bar :: IO ()
       bar = do
         putStrLn "hello"
         putStrLn "world"
      |]

file2 :: Text
file2 =
  [__i|foo = 42
       :t foo

       homophones <- readFile "homophones.list"

       putStrLn "HI"

       a

       import Data.Aeson as A

       -- | Here's a nice comment on bar
       bar :: IO ()
       bar = do
         putStrLn "hello"
         putStrLn "world"
      |]