Skip to content

Conversation

jasnell
Copy link
Member

@jasnell jasnell commented Oct 30, 2018

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-bot
Copy link
Collaborator

@nodejs-github-bot nodejs-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 jasnell force-pushed the http2-improvements3 branch from 9c996f2 to d408b51 Compare October 30, 2018 23:24
@jasnell
Copy link
Member Author

jasnell commented Nov 1, 2018

@jasnell
Copy link
Member Author

jasnell commented Nov 2, 2018

ping @nodejs/http2

Copy link
Member

@mcollina mcollina 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

@Trott Trott 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

 const keys = Object.keys(map);

  let i;
  let key;
  let value;

  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
Member Author

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
Member Author

jasnell commented Nov 6, 2018

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
Member Author

jasnell commented Nov 7, 2018

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
Member Author

jasnell commented Nov 29, 2018 via email

@codebytere
Copy link
Member

@jasnell do you have the bandwidth for this atm?

@jasnell
Copy link
Member Author

jasnell commented Nov 29, 2018

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]>
@BethGriggs BethGriggs 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 free to 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 / src Issues 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