hw-json-0.0.0.1: app/Main.hs
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Main where
import qualified Data.ByteString as BS
import qualified Data.Vector.Storable as DVS
import Data.Word
import GHC.Conc
import HaskellWorks.Data.Bits.BitShown
import HaskellWorks.Data.FromByteString
import HaskellWorks.Data.Json.Succinct.Cursor
import HaskellWorks.Data.Succinct.BalancedParens.Simple
import HaskellWorks.Diagnostics.Time
import System.Mem
readJson :: String -> IO (JsonCursor BS.ByteString (BitShown (DVS.Vector Word64)) (SimpleBalancedParens (DVS.Vector Word64)))
readJson path = do
bs <- BS.readFile path
print "Read file"
!cursor <- measure (fromByteString bs :: JsonCursor BS.ByteString (BitShown (DVS.Vector Word64)) (SimpleBalancedParens (DVS.Vector Word64)))
print "Created cursor"
return cursor
main :: IO ()
main = do
performGC
!c0 <- readJson "/Users/jky/Downloads/78mbs.json"
!c1 <- readJson "/Users/jky/Downloads/78mbs.json"
!c2 <- readJson "/Users/jky/Downloads/78mbs.json"
!c3 <- readJson "/Users/jky/Downloads/78mbs.json"
!c4 <- readJson "/Users/jky/Downloads/78mbs.json"
!c5 <- readJson "/Users/jky/Downloads/78mbs.json"
!c6 <- readJson "/Users/jky/Downloads/78mbs.json"
!c7 <- readJson "/Users/jky/Downloads/78mbs.json"
!c8 <- readJson "/Users/jky/Downloads/78mbs.json"
!c9 <- readJson "/Users/jky/Downloads/78mbs.json"
print "Returned from readJson"
performGC
threadDelay 100000000
print c0
print c1
print c2
print c3
print c4
print c5
print c6
print c7
print c8
print c9