diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2010-01-20 22:08:15 +0100 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2010-01-20 22:08:15 +0100 |
commit | cf789c7ac677b9c13ae6f26d7dda950584a373c8 (patch) | |
tree | 0a794e8e5846486fcdaaaf320badc7fe17256b59 /src/Text/Hakyll/Internal | |
parent | 98d712fc3a96b0b44cde389a1db9c21d76130964 (diff) | |
download | hakyll-cf789c7ac677b9c13ae6f26d7dda950584a373c8.tar.gz |
Speedup of factor 4 by switching to the Data.Binary library for serialization.
Diffstat (limited to 'src/Text/Hakyll/Internal')
-rw-r--r-- | src/Text/Hakyll/Internal/Cache.hs | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/Text/Hakyll/Internal/Cache.hs b/src/Text/Hakyll/Internal/Cache.hs index 454a4c5..9b9fab1 100644 --- a/src/Text/Hakyll/Internal/Cache.hs +++ b/src/Text/Hakyll/Internal/Cache.hs @@ -6,19 +6,17 @@ module Text.Hakyll.Internal.Cache import Control.Monad.Reader (liftIO) import Text.Hakyll.Hakyll (Hakyll) import Text.Hakyll.File +import Data.Binary -storeInCache :: (Show a) => a -> FilePath -> Hakyll () +storeInCache :: (Binary a) => a -> FilePath -> Hakyll () storeInCache value path = do cachePath <- toCache path makeDirectories cachePath - liftIO $ writeFile cachePath (show value) + liftIO $ encodeFile cachePath value -getFromCache :: (Read a) => FilePath -> Hakyll (Maybe a) +getFromCache :: (Binary a) => FilePath -> Hakyll (Maybe a) getFromCache path = do cachePath <- toCache path valid <- isMoreRecent cachePath [path] - if valid then liftIO (getFromCache' cachePath) >>= return . Just + if valid then liftIO (decodeFile cachePath) >>= return . Just else return Nothing - where - getFromCache' cachePath = do c <- readFile cachePath - return (read c) |