mirror of
https://github.com/urbit/shrub.git
synced 2024-12-24 20:47:27 +03:00
Jam/Cue: Tuning
This commit is contained in:
parent
a7bbc9364c
commit
0d057747cc
@ -106,9 +106,11 @@ type Bits = Vector Bool
|
||||
doGet :: Get a -> ByteString -> Either DecodeExn a
|
||||
doGet m bs =
|
||||
unsafePerformIO $ try $ BS.unsafeUseAsCStringLen bs \(ptr, len) -> do
|
||||
-- traceM ("cue size: " <> show (length bs `div` 10))
|
||||
let endPtr = ptr `plusPtr` len
|
||||
tbl <- H.newSized (length bs `div` 10)
|
||||
let sz = max 50
|
||||
$ min 10_000_000
|
||||
$ length bs `div` 6
|
||||
tbl <- H.newSized sz
|
||||
GetResult _ r <- runGet m endPtr tbl (S (castPtr ptr) 0 0)
|
||||
pure r
|
||||
|
||||
|
@ -339,11 +339,9 @@ jamWordSz (W# w) = 1 + 2*(W# preW) + (W# atmW)
|
||||
|
||||
compress :: FatNoun -> IO (Word, H.CuckooHashTable Word Word)
|
||||
compress top = do
|
||||
-- traceM "<compress>"
|
||||
let sz = 10 ^ (floor $ logBase 600 (fromIntegral $ fatSize top))
|
||||
|
||||
-- traceM ("inp(" <> show (fatSize top) <> ")")
|
||||
-- traceM ("sz(" <> show sz <> ")")
|
||||
let sz = max 50
|
||||
$ min 10_000_000
|
||||
$ 2 * (10 ^ (floor $ logBase 600 (fromIntegral $ fatSize top)))
|
||||
|
||||
nodes :: H.BasicHashTable FatNoun Word <- H.newSized sz
|
||||
backs :: H.CuckooHashTable Word Word <- H.newSized sz
|
||||
@ -357,7 +355,6 @@ compress top = do
|
||||
!tSz <- go (pos+2+hSz) t
|
||||
pure (2+hSz+tSz)
|
||||
|
||||
|
||||
go :: Word -> FatNoun -> IO Word
|
||||
go p inp = do
|
||||
H.lookup nodes inp >>= \case
|
||||
@ -375,8 +372,7 @@ compress top = do
|
||||
_ -> noRef
|
||||
|
||||
res <- go 0 top
|
||||
-- traceM "</compress>"
|
||||
-- print res
|
||||
|
||||
pure (res, backs)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user