[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