Skip to content
Snippets Groups Projects
Select Git revision
  • b51c4dd39a6f6ab82e093173120771d4b0ba2490
  • master default protected
  • android-7.1.2_r28_klist
  • pie-cts-release
  • pie-vts-release
  • pie-cts-dev
  • oreo-mr1-iot-release
  • sdk-release
  • oreo-m6-s4-release
  • oreo-m4-s12-release
  • pie-release
  • pie-r2-release
  • pie-r2-s1-release
  • oreo-vts-release
  • oreo-cts-release
  • oreo-dev
  • oreo-mr1-dev
  • pie-gsi
  • pie-platform-release
  • pie-dev
  • oreo-cts-dev
  • android-o-mr1-iot-release-1.0.4
  • android-9.0.0_r8
  • android-9.0.0_r7
  • android-9.0.0_r6
  • android-9.0.0_r5
  • android-8.1.0_r46
  • android-8.1.0_r45
  • android-n-iot-release-smart-display-r2
  • android-vts-8.1_r5
  • android-cts-8.1_r8
  • android-cts-8.0_r12
  • android-cts-7.1_r20
  • android-cts-7.0_r24
  • android-o-mr1-iot-release-1.0.3
  • android-cts-9.0_r1
  • android-8.1.0_r43
  • android-8.1.0_r42
  • android-n-iot-release-smart-display
  • android-p-preview-5
  • android-9.0.0_r3
41 results

mls_macros

Blame
  • BenchParser.hs 1.69 KiB
    {-# LANGUAGE FlexibleContexts #-}
    {-# LANGUAGE ScopedTypeVariables #-}
    module Copar.Coalgebra.BenchParser
      ( benchmarks
      , benchParser
      ) where
    
    import           Criterion
    
    import qualified Data.List.NonEmpty as NonEmpty
    
    import           Data.Text (Text)
    import           Control.DeepSeq
    
    import           Copar.Coalgebra.Parser
    import           Copar.RefinementInterface
    import           Copar.FunctorExpression.Sorts
    import           Copar.FunctorExpression.Type
    import           Copar.FunctorExpression.Parser
    import           Copar.Functors.Polynomial
    import           Copar.Functors
    import           Copar.FunctorDescription
    
    benchmarks :: Benchmark
    benchmarks = bgroup "Morphism Parser"
      [ benchIdentity
      , benchMarkov
      ]
    
    benchIdentity :: Benchmark
    benchIdentity = bgroup "Identity" $
      let f = (Functor 1 (mkPoly [[Identity Variable]]))
      in
        [ benchParser "simple" f "x: y\ny: z\nz: x"
        , benchParser "predefined" f "x: x\ny: y\nz: z"
        ]
    
    benchMarkov :: Benchmark
    benchMarkov = bgroup "Ax(R^X)" $
      let
        functors = map (map functorExprParser) registeredFunctors
        Right f = annotateSorts <$> parseFunctorExpression functors "" "{a,b,c,d,e}x(R^X)"
      in
        [ benchParser "simple" f
          "x: (a, {x: 0.5, y: 0.5})\n\
          \y: (b, {y: 0.7, x: 0.2, z: 0.1})\n\
          \z: (c, {z: 1.0})"
        ]
    
    benchParser ::
         (Functor f, ParseMorphism f, NFData (Label f), NFData (F1 f))
      => String
      -> FunctorExpression f Sort
      -> Text
      -> Benchmark
    benchParser benchmarkName fexpr input = bench benchmarkName (nf parse input)
      where
        parse = parseMorphisms fexpr EnableSanityChecks ""
    
    mkPoly :: [[Factor a]] -> Polynomial a
    mkPoly =
      Polynomial . Sum . NonEmpty.fromList . map (Product . NonEmpty.fromList)