[commit: ghc] master: Deserialize IfaceId more lazily (6446254)
Simon Peyton Jones
simonpj at microsoft.com
Wed Mar 8 12:18:58 UTC 2017
Reid
I beg you to add a comment to these carefully-placed used of laziness!
The informative commit message does not appear in the code :-).
Simon
| -----Original Message-----
| From: ghc-commits [mailto:ghc-commits-bounces at haskell.org] On Behalf
| Of git at git.haskell.org
| Sent: 03 March 2017 21:36
| To: ghc-commits at haskell.org
| Subject: [commit: ghc] master: Deserialize IfaceId more lazily
| (6446254)
|
| Repository : ssh://git@git.haskell.org/ghc
|
| On branch : master
| Link :
| https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fghc.ha
| skell.org%2Ftrac%2Fghc%2Fchangeset%2F644625449a9b6fbeb9a81f1a7d0e7d184
| 24fb707%2Fghc&data=02%7C01%7Csimonpj%40microsoft.com%7C9b1a8ffea4684b8
| f5e7608d4627d690f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6362417
| 38152433434&sdata=H81TTDPPgdp%2BYQzqRFUtiyyfm%2Fn6YRQT%2BoOpJuehsOU%3D
| &reserved=0
|
| >---------------------------------------------------------------
|
| commit 644625449a9b6fbeb9a81f1a7d0e7d18424fb707
| Author: Reid Barton <rwbarton at gmail.com>
| Date: Fri Mar 3 15:49:38 2017 -0500
|
| Deserialize IfaceId more lazily
|
| This change sped up the total validate --build-only time by 0.8%
| on my test system; hopefully a representative result.
|
| I didn't bother making the other constructors lazy because for
| IfaceData and IfaceClass we need to pull on some of the fields
| in loadDecl, and all the others seem much more rare than IfaceId.
|
| Test Plan: validate, perf
|
| Reviewers: austin, bgamari
|
| Reviewed By: bgamari
|
| Subscribers: thomie
|
| Differential Revision: https://phabricator.haskell.org/D3269
|
|
| >---------------------------------------------------------------
|
| 644625449a9b6fbeb9a81f1a7d0e7d18424fb707
| compiler/iface/IfaceSyn.hs | 8 ++------
| 1 file changed, 2 insertions(+), 6 deletions(-)
|
| diff --git a/compiler/iface/IfaceSyn.hs b/compiler/iface/IfaceSyn.hs
| index d73a738..1c30476 100644
| --- a/compiler/iface/IfaceSyn.hs
| +++ b/compiler/iface/IfaceSyn.hs
| @@ -1565,9 +1565,7 @@ instance Binary IfaceDecl where
| put_ bh (IfaceId name ty details idinfo) = do
| putByte bh 0
| putIfaceTopBndr bh name
| - put_ bh ty
| - put_ bh details
| - put_ bh idinfo
| + lazyPut bh (ty, details, idinfo)
|
| put_ bh (IfaceData a1 a2 a3 a4 a5 a6 a7 a8 a9) = do
| putByte bh 2
| @@ -1657,9 +1655,7 @@ instance Binary IfaceDecl where
| h <- getByte bh
| case h of
| 0 -> do name <- get bh
| - ty <- get bh
| - details <- get bh
| - idinfo <- get bh
| + ~(ty, details, idinfo) <- lazyGet bh
| return (IfaceId name ty details idinfo)
| 1 -> error "Binary.get(TyClDecl): ForeignType"
| 2 -> do a1 <- getIfaceTopBndr bh
|
| _______________________________________________
| ghc-commits mailing list
| ghc-commits at haskell.org
| https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.h
| askell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| commits&data=02%7C01%7Csimonpj%40microsoft.com%7C9b1a8ffea4684b8f5e760
| 8d4627d690f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6362417381524
| 33434&sdata=L1dvXY%2BW%2Brv4gMqeWm8BGfIPifKK0DBndoJVF%2FCfu0c%3D&reser
| ved=0
More information about the ghc-devs
mailing list