[GHC] #9067: Optimize clearNursery by short-circuiting when we get to currentNursery

GHC ghc-devs at haskell.org
Sat Dec 27 20:17:18 UTC 2014


#9067: Optimize clearNursery by short-circuiting when we get to currentNursery
-------------------------------------+-------------------------------------
              Reporter:  ezyang      |            Owner:  ezyang
                  Type:  task        |           Status:  closed
              Priority:  low         |        Milestone:
             Component:  Runtime     |          Version:  7.9
  System                             |         Keywords:
            Resolution:  fixed       |     Architecture:  Unknown/Multiple
      Operating System:              |       Difficulty:  Unknown
  Unknown/Multiple                   |       Blocked By:
       Type of failure:  Runtime     |  Related Tickets:
  performance bug                    |
             Test Case:              |
              Blocking:              |
Differential Revisions:  Phab:D318   |
-------------------------------------+-------------------------------------
Changes (by ezyang):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 {{{
 commit e22bc0dedb9e9da0176ad7ce4a74acbefedc7207
 Author: Simon Marlow <marlowsd at gmail.com>
 Date:   Tue Oct 7 10:30:36 2014 +0100

     Make clearNursery free

     Summary:
     clearNursery resets all the bd->free pointers of nursery blocks to
     make the blocks empty.  In profiles we've seen clearNursery taking
     significant amounts of time particularly with large -N and -A values.

     This patch moves the work of clearNursery to the point at which we
     actually need the new block, thereby introducing an invariant that
     blocks to the right of the CurrentNursery pointer still need their
     bd->free pointer reset.  This should make things faster overall,
     because we don't need to clear blocks that we don't use.

     Test Plan: validate

     Reviewers: AndreasVoellmy, ezyang, austin

     Subscribers: thomie, carter, ezyang, simonmar

     Differential Revision: https://phabricator.haskell.org/D318
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9067#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list