Skip to content

Conversation

@jasnell
Copy link
Member

Multiple general improvements to http2 internals for readability and efficiency

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

@nodejs-github-botnodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. labels Oct 30, 2018
Multiple general improvements to http2 internals for readability and efficiency
@jasnell
Copy link
MemberAuthor

@jasnell
Copy link
MemberAuthor

ping @nodejs/http2

Copy link
Member

@mcollinamcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Are there any performance benefits?

@Trott
Copy link
Member

Trott commented Nov 4, 2018

Landed in 7825045

@TrottTrott closed this Nov 4, 2018
Trott pushed a commit to Trott/io.js that referenced this pull request Nov 4, 2018
Multiple general improvements to http2 internals for readability and efficiency PR-URL: nodejs#23984 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]> Reviewed-By: Ujjwal Sharma <[email protected]> Reviewed-By: Matteo Collina <[email protected]>
targos pushed a commit that referenced this pull request Nov 5, 2018
Multiple general improvements to http2 internals for readability and efficiency PR-URL: #23984 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]> Reviewed-By: Ujjwal Sharma <[email protected]> Reviewed-By: Matteo Collina <[email protected]>
@GrosSacASac
Copy link
Contributor

From https://github.com/nodejs/node/blob/7825045ee695e9e5c048133255a3b614e04c98d3/lib/internal/http2/util.js
Is it a good idea to use Object.entries loop in this case ?

it would replace

constkeys=Object.keys(map);leti;letkey;letvalue;for(i=0;i<keys.length;i++){key=keys[i];value=map[key];}

with something like

Object.entries(map).forEach(([key,value])=>{});

@GrosSacASac
Copy link
Contributor

ret+=`${key}\0${value}\0`;

Is it a good idea to push into an array, and join all the strings at the end, instead of doing string concatenation each time in the loop ?

@jasnell
Copy link
MemberAuthor

jasnell commented Nov 6, 2018

Using entries and forEach is quite a bit more expensive performance wise, as is join, because it forces additional unnecessary iterations over the values.

@GrosSacASac
Copy link
Contributor

What is the meaning of irritations in this context ?

@jasnell
Copy link
MemberAuthor

Sorry, that was a phone autocorrect error... Lol

I meant additional unnecessary iterations 😂

@GrosSacASac
Copy link
Contributor

The most natural way to write a program should result in top-of-the-line runtime performance. In places where performance is king, the optimal code should be clearly expressible. Should we open issue in the engine ?

@jasnell
Copy link
MemberAuthor

The v8 team is continually making improvements to the performance in this area, and I suspect they will continue to do so. We'll get there eventually.

@codebytere
Copy link
Member

@jasnell do you want to potentially backport this?

@jasnell
Copy link
MemberAuthor

jasnell commented Nov 29, 2018 via email

@codebytere
Copy link
Member

@jasnell do you have the bandwidth for this atm?

@jasnell
Copy link
MemberAuthor

Not so much. Will take a few weeks for me to get to it

BethGriggs pushed a commit that referenced this pull request Aug 15, 2019
Multiple general improvements to http2 internals for readability and efficiency [This backport applied to v10.x cleanly.] Backport-PR-URL: #29123 PR-URL: #23984 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]> Reviewed-By: Ujjwal Sharma <[email protected]> Reviewed-By: Matteo Collina <[email protected]>
@BethGriggsBethGriggs mentioned this pull request Aug 15, 2019
BethGriggs pushed a commit that referenced this pull request Aug 15, 2019
Multiple general improvements to http2 internals for readability and efficiency [This backport applied to v10.x cleanly but had several merge conflicts on v8.x.] PR-URL: #23984 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]> Reviewed-By: Ujjwal Sharma <[email protected]> Reviewed-By: Matteo Collina <[email protected]>
This was referenced Aug 15, 2019
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c++Issues and PRs that require attention from people who are familiar with C++.lib / srcIssues and PRs related to general changes in the lib or src directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@jasnell@nodejs-github-bot@Trott@GrosSacASac@codebytere@mcollina@addaleax@ryzokuken@trivikr