packages feed

ContextAlgebra-1.0.0.0: src/Main.hs

module Main where

import Criterion.Main
import System.IO

import Complexity.ProtoCalculator
import Complexity.ConceptGenerator

main :: IO()
main = do
 mapM_ makeSafe [stdout, stdin, stderr]
-- creation
 generationBench
 prototypeBench

-- ^ needed because on Manjaro Linux unicode characters abort the execution, the workaround removes the unicode characters
makeSafe h = do
  ce' <- hGetEncoding h
  case ce' of
    Nothing -> return ()
    Just ce -> mkTextEncoding ((takeWhile (/= '/') $ show ce) ++ "//TRANSLIT") >>=
      hSetEncoding h

-- be aware to change numbers in CalcPrototype
prototypeBench = defaultMain
 [bgroup "prototypeCalculation"$  
  map (\c ->bench (label c) $! nfIO (calcProto c)) [1..ctx]
 ]
  where ctx = fromInteger testAmountContexts
        exe = testAmountExemplars
        label c = "meets-"++(show c)++"-contexts-"++(show testAmountContexts)++"-exemplars-"++(show exe)


generationBench = defaultMain
 [bgroup "Concept generation"$
  map (\c -> bench (label c) $ nfIO (createAndStoreConcept c exe)) [12..ctx]
 ]
  where ctx = 12
        exe = 1
        label c =  ("contexts-"++(show c)++"-exemplars-"++(show exe))