1{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE PackageImports #-}
4module Main (main) where
11import Data.Foldable (toList)
12import qualified "aeson" Data.Aeson as A
13import qualified "aeson-benchmarks" Data.Aeson as B
14import qualified Data.Sequence as S
15import qualified Data.Vector as V
16import qualified Data.Vector.Unboxed as U
18-------------------------------------------------------------------------------
20-------------------------------------------------------------------------------
22newtype L f = L { getL :: f Int }
24instance Foldable f => B.ToJSON (L f) where
25 toJSON = error "do not use this"
26 toEncoding = B.toEncoding . toList . getL
28instance Foldable f => A.ToJSON (L f) where
29 toJSON = error "do not use this"
30 toEncoding = A.toEncoding . toList . getL
32-------------------------------------------------------------------------------
34-------------------------------------------------------------------------------
36newtype F f = F { getF :: f Int }
38instance Foldable f => B.ToJSON (F f) where
39 toJSON = error "do not use this"
40 toEncoding = B.foldable . getF
42instance Foldable f => A.ToJSON (F f) where
43 toJSON = error "do not use this"
44 toEncoding = A.foldable . getF
46-------------------------------------------------------------------------------
48-------------------------------------------------------------------------------
54valueSeq = S.fromList valueList
56valueVector :: V.Vector Int
57valueVector = V.fromList valueList
59valueUVector :: U.Vector Int
60valueUVector = U.fromList valueList
62-------------------------------------------------------------------------------
64-------------------------------------------------------------------------------
72 = bench ("A " ++ name) $ nf A.encode val
80 = bench ("B " ++ name) $ nf B.encode val
86 [ benchEncodeB "-" valueList
87 , benchEncodeB "L" $ L valueList
88 , benchEncodeB "F" $ F valueList
89 , benchEncodeA "-" valueList
90 , benchEncodeA "L" $ L valueList
91 , benchEncodeA "F" $ F valueList
94 [ benchEncodeB "-" valueSeq
95 , benchEncodeB "L" $ L valueSeq
96 , benchEncodeB "F" $ F valueSeq
97 , benchEncodeA "-" valueSeq
98 , benchEncodeA "L" $ L valueSeq
99 , benchEncodeA "F" $ F valueSeq
102 [ benchEncodeB "-" valueVector
103 , benchEncodeB "L" $ L valueVector
104 , benchEncodeB "F" $ F valueVector
105 , benchEncodeA "-" valueVector
106 , benchEncodeA "L" $ L valueVector
107 , benchEncodeA "F" $ F valueVector
109 , bgroup "Vector.Unboxed"
110 [ benchEncodeB "-" valueUVector
111 , benchEncodeA "-" valueUVector
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list