packages feed

perceptual-hash-0.1.3.0: bench/Bench.cpphs

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
                ]