on master help sign in
Experimental HashMap fun

Makes parsing about 5% faster --HG-- branch : hashmap

commit1156fcb5afe1e732838f664b9743cab6bb8eb90b authorBryan O'Sullivan <bos@serpentine.com> dateTue 1 Feb 2011, 12:47 (16 years ago) parentcbe5617
4 files changed+7−7
Data/Aeson/Encode.hs+1−1 Data/Aeson/Parser.hs+1−1 Data/Aeson/Types.hs+4−4 aeson.cabal+1−1
Data/Aeson/Encode.hs+1−1
@@ -22,7 +22,7 @@ import Data.Monoid (mappend)
2222import Numeric (showHex)
2323import qualified Data.ByteString.Char8 as B
2424import qualified Data.ByteString.Lazy.Char8 as L
25−import qualified Data.Map as M
25+import qualified Data.HashMap as M
2626import qualified Data.Text as T
2727import qualified Data.Vector as V
2828
Data/Aeson/Parser.hs+1−1
@@ -25,7 +25,7 @@ import Data.Attoparsec.Char8
2525import Data.Bits ((.|.), shiftL)
2626import Data.ByteString as B
2727import Data.Char (chr)
28−import Data.Map as Map
28+import Data.HashMap as Map
2929import Data.Monoid (mappend, mempty)
3030import Data.Text as T
3131import Data.Text.Encoding (decodeUtf8)
Data/Aeson/Types.hs+4−4
@@ -27,7 +27,7 @@ module Data.Aeson.Types
2727
2828import Control.Applicative
2929import Control.DeepSeq (NFData(..))
30−import Data.Map (Map)
30+import Data.HashMap (HashMap)
3131import qualified Data.ByteString as B
3232import qualified Data.ByteString.Lazy as LB
3333import Data.Text.Encoding (decodeUtf8, encodeUtf8)
@@ -38,10 +38,10 @@ import Data.Time.Format (formatTime, parseTime)
3838import Data.Typeable (Typeable)
3939import Data.Vector (Vector)
4040import System.Locale (defaultTimeLocale)
41−import qualified Data.Map as M
41+import qualified Data.HashMap as M
4242import qualified Data.Vector as V
4343
44−type Object = Map Text Value
44+type Object = HashMap Text Value
4545type Array = Vector Value
4646
4747-- | A JSON value represented as a Haskell value.
@@ -95,7 +95,7 @@ obj .:? key = case M.lookup key obj of
9595-- | Create a 'Value' from a list of 'Object's. If duplicate
9696-- keys arise, earlier keys and their associated values win.
9797object :: [Object] -> Value
98−object = Object . M.unions
98+object = Object . M.fromList . concat . map M.toList
9999{-# INLINE object #-}
100100
101101-- | A type that can be converted to JSON.
aeson.cabal+1−1
@@ -72,7 +72,7 @@ library
7272 base == 4.*,
7373 blaze-builder >= 0.2.1.4,
7474 bytestring,
75− containers,
75+ unordered-containers,
7676 deepseq,
7777 old-locale,
7878 text >= 0.11.0.2,