From: Matt Joiner Date: Thu, 20 Nov 2014 02:01:32 +0000 (-0600) Subject: Don't allocate pieces map unless necessary when filling responsive requests X-Git-Tag: v1.0.0~1497 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=a893e685b02590ec4edd3062ce5841881c1edbd6;p=btrtrc.git Don't allocate pieces map unless necessary when filling responsive requests --- diff --git a/download_strategies.go b/download_strategies.go index bc728759..e0e79814 100644 --- a/download_strategies.go +++ b/download_strategies.go @@ -176,6 +176,9 @@ type requestFiller struct { // Wrapper around connection.request that tracks request heat. func (me *requestFiller) request(req request) bool { + if me.pieces == nil { + me.pieces = make(map[int]struct{}) + } me.pieces[int(req.Index)] = struct{}{} if me.c.RequestPending(req) { return true @@ -330,7 +333,7 @@ func (me *requestFiller) readahead() bool { } func (me *responsiveDownloadStrategy) FillRequests(t *torrent, c *connection) (pieces []int) { - rf := requestFiller{c, t, me, make(map[int]struct{}, t.NumPieces())} + rf := requestFiller{c: c, t: t, s: me} rf.Run() for p := range rf.pieces { pieces = append(pieces, p)