Skip to content

Commit

Permalink
http2: shrink default vector::reserve() allocations
Browse files Browse the repository at this point in the history
Allocating memory upfront comes with overhead, and in particular,
`std::vector` implementations do not necessarily return memory
to the system when one might expect that (e.g. after shrinking the
vector).

Backport-PR-URL: #29124
PR-URL: #29122
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
addaleax authored and BethGriggs committed Aug 15, 2019
1 parent 10f05b6 commit 156f2f3
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions src/node_http2.cc
Expand Up @@ -668,7 +668,7 @@ Http2Session::Http2Session(Environment* env,
// fails.
CHECK_EQ(fn(&session_, callbacks, this, *opts, *allocator_info), 0);

outgoing_storage_.reserve(4096);
outgoing_storage_.reserve(1024);
outgoing_buffers_.reserve(32);

{
Expand Down Expand Up @@ -1993,9 +1993,10 @@ Http2Stream::Http2Stream(

// Limit the number of header pairs
max_header_pairs_ = session->GetMaxHeaderPairs();
if (max_header_pairs_ == 0)
max_header_pairs_ = DEFAULT_MAX_HEADER_LIST_PAIRS;
current_headers_.reserve(max_header_pairs_);
if (max_header_pairs_ == 0) {
max_header_pairs_ = DEFAULT_MAX_HEADER_LIST_PAIRS;
}
current_headers_.reserve(std::min(max_header_pairs_, 12u));

// Limit the number of header octets
max_header_length_ =
Expand Down

0 comments on commit 156f2f3

Please sign in to comment.