convert Key to ShortByteString
This adds the overhead of a copy when serializing and deserializing keys. I have not benchmarked much, but runtimes seem barely changed at all by that. When a lot of keys are in memory, it improves memory use. And, it prevents keys sometimes getting PINNED in memory and failing to GC, which is a problem ByteString has sometimes. In particular, git-annex sync from a borg special remote had that problem and this improved its memory use by a large amount. Sponsored-by: Shae Erisson on Patreon
This commit is contained in:
parent
012b71e471
commit
19e78816f0
15 changed files with 65 additions and 36 deletions
|
@ -22,6 +22,7 @@ import Types.Key
|
|||
import Utility.DataUnits
|
||||
|
||||
import Criterion.Main
|
||||
import qualified Data.ByteString.Short as S (toShort)
|
||||
import qualified Data.ByteString.Char8 as B8
|
||||
import System.Random
|
||||
import Control.Concurrent
|
||||
|
@ -87,7 +88,7 @@ populateAssociatedFiles h num = do
|
|||
|
||||
keyN :: Integer -> Key
|
||||
keyN n = mkKey $ \k -> k
|
||||
{ keyName = B8.pack $ "key" ++ show n
|
||||
{ keyName = S.toShort (B8.pack $ "key" ++ show n)
|
||||
, keyVariety = OtherKey "BENCH"
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue