persistent-2.18.0.0: bench/Main.hs
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Main (main) where
import Control.DeepSeq
import Criterion.Main
import Data.Text (Text)
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
import Database.Persist.Quasi
import Database.Persist.TH
import Database.Persist.TH.Internal
import Models
main :: IO ()
main =
defaultMain
[ bgroup
"mkPersist"
[]
]
-- bench "From File" $ nfIO $ mkPersist' $(persistFileWith lowerCaseSettings "bench/models-slowly")
-- , bgroup "Non-Null Fields"
-- [ bgroup "Increasing model count"
-- [ bench "1x10" $ nfIO $ mkPersist' $( parseReferencesQ (mkModels 10 10))
-- , bench "10x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkModels 10 10))
-- , bench "100x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkModels 100 10))
-- -- , bench "1000x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkModels 1000 10))
-- ]
-- , bgroup "Increasing field count"
-- [ bench "10x1" $ nfIO $ mkPersist' $(parseReferencesQ (mkModels 10 1))
-- , bench "10x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkModels 10 10))
-- , bench "10x100" $ nfIO $ mkPersist' $(parseReferencesQ (mkModels 10 100))
-- -- , bench "10x1000" $ nfIO $ mkPersist' $(parseReferencesQ (mkModels 10 1000))
-- ]
-- ]
-- , bgroup "Nullable"
-- [ bgroup "Increasing model count"
-- [ bench "20x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 20 10))
-- , bench "40x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 40 10))
-- , bench "60x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 60 10))
-- , bench "80x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 80 10))
-- , bench "100x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 100 10))
-- -- , bench "1000x10" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 1000 10))
-- ]
-- , bgroup "Increasing field count"
-- [ bench "10x20" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 10 20))
-- , bench "10x40" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 10 40))
-- , bench "10x60" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 10 60))
-- , bench "10x80" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 10 80))
-- , bench "10x100" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 10 100))
-- -- , bench "10x1000" $ nfIO $ mkPersist' $(parseReferencesQ (mkNullableModels 10 1000))
-- ]
-- ]
-- Orphan instances for NFData Template Haskell types
instance NFData Overlap
instance NFData AnnTarget
instance NFData RuleBndr
instance NFData Role
instance NFData Phases
instance NFData InjectivityAnn
instance NFData FamilyResultSig
instance NFData RuleMatch
instance NFData TypeFamilyHead
instance NFData TySynEqn
instance NFData Inline
instance NFData Pragma
instance NFData FixityDirection
instance NFData Safety
instance NFData Fixity
instance NFData Callconv
instance NFData Foreign
instance NFData SourceStrictness
instance NFData SourceUnpackedness
instance NFData FunDep
instance NFData Bang
#if MIN_VERSION_template_haskell(2,12,0)
instance NFData PatSynDir where
instance NFData PatSynArgs where
instance NFData DerivStrategy where
instance NFData DerivClause where
#endif
#if MIN_VERSION_template_haskell(2,21,0)
instance NFData BndrVis where
#endif
#if MIN_VERSION_template_haskell(2,22,0)
instance NFData NamespaceSpecifier where
#endif
instance NFData Con
instance NFData Range
instance NFData Clause
instance NFData PkgName
instance NFData Dec
instance NFData Stmt
instance NFData TyLit
instance NFData NameSpace
instance NFData Body
instance NFData Guard
instance NFData Match
instance NFData ModName
instance NFData Pat
#if MIN_VERSION_template_haskell(2,16,0)
instance NFData Bytes where
rnf !_ = ()
#endif
#if MIN_VERSION_template_haskell(2,17,0)
instance NFData a => NFData (TyVarBndr a) where
instance NFData Specificity
#else
instance NFData TyVarBndr where
#endif
instance NFData NameFlavour
instance NFData Type
instance NFData Exp
instance NFData Lit
instance NFData OccName
instance NFData Name