module Main (main) where import Criterion.Main import Data.Word (Word64) #ifdef FOREIGN_PHASH import ForeignHash (foreignFileHash) #endif import PerceptualHash (fileHash) import System.FilePath (takeFileName) mkBGroup :: String -> (FilePath -> IO Word64) -> Benchmark mkBGroup str f = bgroup str (toBench <$> [catPath, frogJpeg, frogPng]) where toBench fp = bench (takeFileName fp) $ nfIO (f fp) catPath = "demo-data/cat.png" frogJpeg = "demo-data/frog.jpeg" frogPng = "demo-data/frog.png" main :: IO () main = defaultMain [ mkBGroup "fileHash" fileHash #ifdef FOREIGN_PHASH , mkBGroup "foreignHash" foreignFileHash #endif ]