module Main (main) where import Control.DeepSeq (NFData) import Criterion.Main #ifdef FOREIGN_PHASH import ForeignHash (foreignFileHash) #endif import PerceptualHash (fileHash) import System.FilePath (takeFileName) mkBGroup :: NFData a => String -> (FilePath -> IO a) -> 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 ]