delete broken runtime benchmark

per discussion with @dolio
This commit is contained in:
Arya Irani 2022-02-17 09:36:58 -07:00
parent a549bd49ab
commit 953e372fa8
4 changed files with 0 additions and 340 deletions

View File

@ -60,9 +60,6 @@ cradle:
- path: "unison-cli/unison"
component: "unison-cli:exe:unison"
- path: "parser-typechecker/benchmarks/runtime"
component: "unison-parser-typechecker:bench:runtime"
- path: "unison-core/src"
component: "unison-core1:lib"

View File

@ -1,287 +0,0 @@
{- ORMOLU_DISABLE -} -- Remove this when the file is ready to be auto-formatted
{-# language PatternSynonyms #-}
module Main(main) where
import Criterion.Main
import Data.Word
import Unison.Runtime.MCode
import Unison.Runtime.Machine
import Unison.Util.EnumContainers
infixr 0 $$
($$) :: Instr -> Section -> Section
($$) = Ins
loop :: Section
loop = Match 0 $ Test1 0 (Yield $ UArg1 1) rec
where
rec = Prim2 ADDI 0 1
$$ Prim1 DECI 1
$$ App False (Env 0) (UArg2 0 1)
-- Boxed version of loop to see how fast we are without
-- worker/wrapper.
sloop :: Section
sloop = Unpack 1 $$ Unpack 0 $$ body
where
body = Match 1 $ Test1
0 (Pack 0 (UArg1 3) $$ Yield (BArg1 0))
{-else-} rec
rec = Prim2 ADDI 1 3
$$ Prim1 DECI 2
$$ Pack 0 (UArg1 1)
$$ Pack 0 (UArg1 0)
$$ App False (Env 1) (BArg2 0 1)
-- loop with fast path optimization
oloop :: Section
oloop = Match 0 $ Test1 0 (Yield $ UArg1 1) rec
where
rec = Prim2 ADDI 0 1
$$ Prim1 DECI 1
$$ Call False 7 (UArg2 0 1)
-- sloop with fast path optimization
soloop :: Section
soloop = Unpack 1 $$ Unpack 0 $$ body
where
body = Match 1 $ Test1
0 (Pack 0 (UArg1 3) $$ Yield (BArg1 0))
{-else-} rec
rec = Prim2 ADDI 1 3
$$ Prim1 DECI 2
$$ Pack 0 (UArg1 1)
$$ Pack 0 (UArg1 0)
$$ Call False 8 (BArg2 0 1)
konst :: Section
konst = Yield (BArg1 0)
add :: Section
add = Unpack 1
$$ Unpack 0
$$ Prim2 ADDI 1 3
$$ Pack 0 (UArg1 0)
$$ Yield (BArg1 0)
-- get = shift $ \k s -> k s s
-- put s = shift $ \k _ -> k () s
-- loop :: Int -> Int -> Int
-- loop n s0 = reset (body n) s0
-- where
-- body m | m == 0 = x = get ; f _ = x ; f
-- | otherwise = x = get ; put (x+m) ; body (m-1)
-- k s => (k s) s -- k continuation
diag :: Section
diag = Let (Reset (setSingleton 0) $$ Jump 0 (BArg1 1))
$ App False (Stk 0) (BArg1 2)
-- => shift k. diag k
get :: Section
get = Capture 0
$$ App False (Env 12) (BArg1 0)
-- k s _ => (k) s
kid :: Section
kid = Let (Reset (setSingleton 0) $$ Jump 0 ZArgs)
$ App False (Stk 0) (BArg1 2)
-- s => shift k. kid k s
put :: Section
put = Capture 0
$$ App False (Env 15) (BArg2 0 1)
-- m => ...
kloopb :: Section
kloopb =
Match 0 $ Test1
0 (Let (App False (Env 13) ZArgs) $ App False (Env 10) (BArg1 0))
{-else-} $ rec
where
rec = Let (App False (Env 13) ZArgs) -- get
$ Pack 0 (UArg1 0)
$$ Let (App False (Env 11) (BArg2 0 1)) -- add
$ Let (App False (Env 14) (BArg1 0)) -- put
$ Prim1 DECI 0
$$ App False (Env 5) (UArg1 0)
-- m a => f = reset (kloopb m) ; y = f (I# a) ; print y
kloop :: Section
kloop = Let (Reset (setSingleton 0) $$ App False (Env 5) (UArg1 0))
$ Pack 0 (UArg1 1)
$$ App False (Stk 1) (BArg1 0)
-- s0 0 => s0
-- s0 1 s => tinst s setDyn 0 (teff s)
teff :: Section
teff
= Match 0 $ Test1
0 (Yield $ BArg1 0)
$ {-else-} Call True 21 ZArgs
-- s => setDyn 0 (teff s)
tinst :: Section
tinst
= Name 20 (BArg1 0)
$$ SetDyn 0 0
$$ Yield ZArgs
-- m => ...
tloopb :: Section
tloopb =
Match 0 $ Test1
0 (Lit 0 $$ App True (Dyn 0) (UArg1 0)) -- get
{-else-} rec
where
rec = Let (Lit 0 $$ App False (Dyn 0) (UArg1 0)) -- get
$ Pack 0 (UArg1 0) -- I# m
$$ Let (App False (Env 11) (BArg2 0 1)) -- add
$ Let (Lit 1 $$ App False (Dyn 0) (UArg1 0)) -- put
$ Prim1 DECI 0
$$ Call False 25 (UArg1 0)
-- m s => reset (tinst (I# s) ; tloopb m)
tloop :: Section
tloop = Reset (setSingleton 0)
$$ Pack 0 (UArg1 1)
$$ Let (Call True 21 $ BArg1 0)
$ Call True 25 $ UArg1 0
fib :: Section
fib = Match 0 $ Test2
0 (Lit 0 $$ Yield $ UArg1 0)
1 (Lit 1 $$ Yield $ UArg1 0)
{-else-} rec
where
rec = Prim1 DECI 0
$$ Prim1 DECI 0
$$ Let (App False (Env 2) (UArg1 1))
$ Let (App False (Env 2) (UArg1 1))
$ Prim2 ADDI 0 1 $$ Yield (UArg1 0)
ofib :: Section
ofib = Match 0 $ Test2
0 (Lit 0 $$ Yield $ UArg1 0)
1 (Lit 1 $$ Yield $ UArg1 0)
{-else-} rec
where
rec = Prim1 DECI 0
$$ Prim1 DECI 0
$$ Let (Call True 9 (UArg1 1))
$ Let (Call True 9 (UArg1 1))
$ Prim2 ADDI 0 1 $$ Yield (UArg1 0)
stackEater :: Section
stackEater
= Match 0 $ Test1
0 (Yield ZArgs)
$ Prim1 DECI 0
$$ Let (App False (Env 4) (UArg1 0))
$ Yield ZArgs
testEnv :: Word64 -> Comb
testEnv 0 = Lam 2 0 4 0 loop
testEnv 1 = Lam 0 2 6 4 sloop
testEnv 2 = Lam 1 0 6 0 fib
testEnv 4 = Lam 1 0 1 0 stackEater
testEnv 5 = Lam 1 0 2 3 kloopb
testEnv 6 = Lam 2 0 2 2 kloop
testEnv 7 = Lam 2 0 4 0 oloop
testEnv 8 = Lam 0 2 6 4 soloop
testEnv 9 = Lam 1 0 6 0 ofib
testEnv 10 = Lam 0 2 0 2 konst
testEnv 11 = Lam 0 2 5 3 add
testEnv 12 = Lam 0 2 0 2 diag
testEnv 13 = Lam 0 0 0 1 get
testEnv 14 = Lam 0 1 0 2 put
testEnv 15 = Lam 0 3 0 3 kid
testEnv 20 = Lam 1 1 1 2 teff
testEnv 21 = Lam 0 1 0 2 tinst
testEnv 25 = Lam 1 0 4 3 tloopb
testEnv 26 = Lam 1 0 4 3 tloop
testEnv _ = error "testEnv"
setupu1 :: Word64 -> Int -> Section
setupu1 f n = Lit n $$ App False (Env f) (UArg1 0)
setupu2 :: Word64 -> Int -> Int -> Section
setupu2 f m n = Lit m $$ Lit n $$ App False (Env f) (UArg2 0 1)
setupb2 :: Word64 -> Int -> Int -> Section
setupb2 f m n
= Lit m $$ Pack 0 (UArg1 0)
$$ Lit n $$ Pack 0 (UArg1 0)
$$ App False (Env f) (BArgR 0 2)
benchEv :: String -> Section -> Benchmark
benchEv str code = bench str . whnfIO . eval0 testEnv $ code
main = defaultMain
[ bgroup "loop"
[ benchEv "2500" $ setupu2 0 0 2500
, benchEv "5000" $ setupu2 0 0 5000
, benchEv "10000" $ setupu2 0 0 10000
, benchEv "100000" $ setupu2 0 0 100000
, benchEv "1000000" $ setupu2 0 0 1000000
]
, bgroup "oloop"
[ benchEv "2500" $ setupu2 7 0 2500
, benchEv "5000" $ setupu2 7 0 5000
, benchEv "10000" $ setupu2 7 0 10000
, benchEv "100000" $ setupu2 7 0 100000
, benchEv "1000000" $ setupu2 7 0 1000000
]
, bgroup "sloop"
[ benchEv "2500" $ setupb2 1 0 2500
, benchEv "5000" $ setupb2 1 0 5000
, benchEv "10000" $ setupb2 1 0 10000
, benchEv "100000" $ setupb2 1 0 100000
, benchEv "1000000" $ setupb2 1 0 1000000
]
, bgroup "soloop"
[ benchEv "2500" $ setupb2 8 0 2500
, benchEv "5000" $ setupb2 8 0 5000
, benchEv "10000" $ setupb2 8 0 10000
, benchEv "100000" $ setupb2 8 0 100000
, benchEv "1000000" $ setupb2 8 0 1000000
]
, bgroup "kloop"
[ benchEv "2500" $ setupu2 6 0 2500
, benchEv "5000" $ setupu2 6 0 5000
, benchEv "10000" $ setupu2 6 0 10000
, benchEv "100000" $ setupu2 6 0 100000
, benchEv "1000000" $ setupu2 6 0 1000000
]
, bgroup "tloop"
[ benchEv "2500" $ setupu2 26 0 2500
, benchEv "5000" $ setupu2 26 0 5000
, benchEv "10000" $ setupu2 26 0 10000
, benchEv "100000" $ setupu2 26 0 100000
, benchEv "1000000" $ setupu2 26 0 1000000
]
, bgroup "fib"
[ benchEv "10" $ setupu1 2 10
, benchEv "15" $ setupu1 2 15
, benchEv "20" $ setupu1 2 20
, benchEv "25" $ setupu1 2 25
, benchEv "30" $ setupu1 2 30
]
, bgroup "ofib"
[ benchEv "10" $ setupu1 9 10
, benchEv "15" $ setupu1 9 15
, benchEv "20" $ setupu1 9 20
, benchEv "25" $ setupu1 9 25
, benchEv "30" $ setupu1 9 30
]
, bgroup "stackEater"
[ benchEv "100" $ setupu1 4 100
, benchEv "1000" $ setupu1 4 1000
, benchEv "10000" $ setupu1 4 10000
, benchEv "100000" $ setupu1 4 100000
]
]

View File

@ -185,14 +185,3 @@ executables:
- unison-prelude
- unison-util
- unison-util-relation
benchmarks:
runtime:
source-dirs: benchmarks/runtime
main: Main.hs
dependencies:
- base
- criterion
- containers
- unison-core1
- unison-parser-typechecker

View File

@ -442,42 +442,3 @@ executable tests
if flag(optimized)
ghc-options: -funbox-strict-fields -O2
default-language: Haskell2010
benchmark runtime
type: exitcode-stdio-1.0
main-is: Main.hs
other-modules:
Paths_unison_parser_typechecker
hs-source-dirs:
benchmarks/runtime
default-extensions:
ApplicativeDo
BangPatterns
BlockArguments
DeriveFunctor
DeriveGeneric
DerivingStrategies
DoAndIfThenElse
FlexibleContexts
FlexibleInstances
GeneralizedNewtypeDeriving
LambdaCase
MultiParamTypeClasses
NamedFieldPuns
OverloadedStrings
PatternSynonyms
RankNTypes
ScopedTypeVariables
TupleSections
TypeApplications
ViewPatterns
ghc-options: -Wall -O0 -fno-warn-name-shadowing -fno-warn-missing-pattern-synonym-signatures
build-depends:
base
, containers
, criterion
, unison-core1
, unison-parser-typechecker
if flag(optimized)
ghc-options: -funbox-strict-fields -O2
default-language: Haskell2010