├── README.md
├── benchmarks
└── community-benchmark
│ └── run.sh
└── meetings
├── 2022-11-14.md
├── 2022-11-28.md
├── 2023-01-09.md
├── 2023-01-23.md
├── 2023-02-06.md
├── 2023-02-20.md
├── 2023-04-03.md
├── 2023-04-17.md
├── 2023-05-01.md
├── 2023-05-15.md
├── 2023-05-29.md
├── 2023-06-12.md
├── 2023-06-26.md
├── 2023-07-10.md
└── 2023-10-16.md
/README.md:
--------------------------------------------------------------------------------
1 | [](https://slack-invite.openjsf.org/)
2 |
3 | ## Performance Team
4 |
5 | The Node.js Performance Team is a place to propose and discuss initiatives
6 | around improving the performance of Node.js internals.
7 |
8 | For the current list of team members, see the project
9 | [README.md](./README.md#current-project-team-members).
10 |
11 | ## Current Project Team Members
12 |
13 |
14 |
15 | * [@anonrig](https://github.com/anonrig) - Yagiz Nizipli
16 | * [@apapirovski](https://github.com/apapirovski) - Anatoli Papirovski
17 | * [@benjamingr](https://github.com/benjamingr) - Benjamin Gruenbaum
18 | * [@bmeurer](https://github.com/bmeurer) - Benedikt Meurer
19 | * [@BridgeAR](https://github.com/BridgeAR) - Ruben Bridgewater
20 | * [@CanadaHonk](https://github.com/CanadaHonk) - CanadaHonk
21 | * [@ErickWendel](https://github.com/ErickWendel) - Erick Wendel
22 | * [@Ethan-Arrowood](https://github.com/Ethan-Arrowood) - Ethan Arrowood
23 | * [@F3n67u](https://github.com/F3n67u) - Feng Yu
24 | * [@fhinkel](https://github.com/fhinkel) - F. Hinkelmann
25 | * [@gareth-ellis](https://github.com/gareth-ellis) - Gareth Ellis
26 | * [@gibfahn](https://github.com/gibfahn) - Gibson Fahnestock
27 | * [@H4ad](https://github.com/H4ad) - Vinícius Lourenço
28 | * [@joyeecheung](https://github.com/joyeecheung) - Joyee Cheung
29 | * [@mcollina](https://github.com/mcollina) - Matteo Collina
30 | * [@qard](https://github.com/qard) - Stephen Belanger
31 | * [@RafaelGSS](https://github.com/RafaelGSS) - Rafael Gonzaga
32 | * [@rluvaton](https://github.com/rluvaton) - Raz Luvaton
33 | * [@santigimeno](https://github.com/santigimeno) - Santiago Gimeno
34 | * [@sheplu](https://github.com/sheplu) - Jean Burellier
35 | * [@sxa](https://github.com/sxa) - Stewart X Addison
36 | * [@TimothyGu](https://github.com/TimothyGu) - Timothy Gu
37 | * [@tniessen](https://github.com/tniessen) - Tobias Nießen
38 | * [@trevnorris](https://github.com/trevnorris) - Trevor Norris
39 | * [@UlisesGascon](https://github.com/UlisesGascon) - Ulises Gascón
40 | * [@uzlopak](https://github.com/uzlopak) - Aras Abbasi
41 |
42 |
43 |
44 | ## Collaborators
45 |
46 | The Performance Team GitHub repository is
47 | maintained by the team and additional Collaborators who are added by the
48 | team on an ongoing basis.
49 |
50 | Individuals making significant and valuable contributions are made
51 | Collaborators and given commit-access to the project. These
52 | individuals are identified by the team and their addition as
53 | Collaborators is discussed during the weekly meeting.
54 |
55 | _Note:_ If you make a significant contribution and are not considered
56 | for commit-access log an issue or contact a team member directly and it
57 | will be brought up in the next meeting.
58 |
59 | Modifications of the contents of the Performance Team repository are made on
60 | a collaborative basis. Anybody with a GitHub account may propose a
61 | modification via pull request and it will be considered by the project
62 | Collaborators. All pull requests must be reviewed and accepted by a
63 | Collaborator with sufficient expertise who is able to take full
64 | responsibility for the change. In the case of pull requests proposed
65 | by an existing Collaborator, an additional Collaborator is required
66 | for sign-off. Consensus should be sought if additional Collaborators
67 | participate and there is disagreement around a particular
68 | modification. See _Consensus Seeking Process_ below for further detail
69 | on the consensus model used for governance.
70 |
71 | Collaborators may opt to elevate significant or controversial
72 | modifications, or modifications that have not found consensus to the
73 | team for discussion by assigning the ***performance-agenda*** tag to a pull
74 | request or issue. The team should serve as the final arbiter where
75 | required.
76 |
77 | For the current list of Collaborators, see the project
78 | [README.md](./README.md#current-project-team-members).
79 |
80 | ## Team Membership
81 |
82 | Team seats are not time-limited. There is no fixed size of the team.
83 | However, the expected target is between 6 and 12, to ensure adequate
84 | coverage of important areas of expertise, balanced with the ability to
85 | make decisions efficiently.
86 |
87 | There is no specific set of requirements or qualifications for the
88 | membership beyond these rules.
89 |
90 | The team may add additional members by unanimous consensus.
91 |
92 | A team member may be removed from the Performance Team by voluntary
93 | resignation, or by unanimous consensus of all other team members.
94 |
95 | Changes to team membership should be posted in the agenda, and may be
96 | suggested as any other agenda item (see "Team Meetings" below).
97 |
98 | If an addition or removal is proposed during a meeting, and the full
99 | team is not in attendance to participate, then the addition or removal
100 | is added to the agenda for the subsequent meeting. This is to ensure
101 | that all members are given the opportunity to participate in all
102 | membership decisions. If a team member is unable to attend a meeting
103 | where a planned membership decision is being made, then their consent
104 | is assumed.
105 |
106 | No more than 1/3 of the team members may be affiliated with the same
107 | employer. If removal or resignation of a team member, or a change of
108 | employment by a team member, creates a situation where more than 1/3 of
109 | the team membership shares an employer, then the situation must be
110 | immediately remedied by the resignation or removal of one or more team
111 | members affiliated with the over-represented employer(s).
112 |
113 | ## Team Meetings
114 |
115 | The team meets weekly on a Zoom On Air. A designated moderator
116 | approved by the team runs the meeting. Each meeting should be
117 | published to [YouTube](https://www.youtube.com/c/nodejs-foundation/streams).
118 |
119 | Items are added to the team agenda that are considered contentious or
120 | are modifications of governance, contribution policy, team membership,
121 | or release process.
122 |
123 | The intention of the agenda is not to approve or review all patches;
124 | that should happen continuously on GitHub and be handled by the larger
125 | group of Collaborators.
126 |
127 | Any community member or contributor can ask that something be added to
128 | the next meeting's agenda by logging a GitHub Issue. Any Collaborator,
129 | team member or the moderator can add the item to the agenda by adding
130 | the ***performance-agenda*** tag to the issue.
131 |
132 | Prior to each team meeting the moderator will share the Agenda with
133 | members of the team. Team members can add any items they like to the
134 | agenda at the beginning of each meeting. The moderator and the team
135 | cannot veto or remove items.
136 |
137 | The team may invite persons or representatives from certain projects to
138 | participate in a non-voting capacity.
139 |
140 | The moderator is responsible for summarizing the discussion of each
141 | agenda item and sends it as a pull request after the meeting.
142 |
143 | ## Consensus Seeking Process
144 |
145 | The Performance Team follows a [Consensus Seeking][] decision-making model.
146 |
147 | When an agenda item has appeared to reach a consensus the moderator
148 | will ask "Does anyone object?" as a final call for dissent from the
149 | consensus.
150 |
151 | If an agenda item cannot reach a consensus a team member can call for
152 | either a closing vote or a vote to table the issue to the next
153 | meeting. The call for a vote must be seconded by a majority of the team
154 | or else the discussion will continue. Simple majority wins.
155 |
156 | Note that changes to team membership require unanimous consensus. See
157 | "Team Membership" above.
158 |
159 |
160 | ## Developer's Certificate of Origin 1.1
161 |
162 | Use of a CLA or DCO is mandatory for all all OpenJS Foundation projects. The Node.js project has chosen to use the DCO 1.1
163 |
164 | By making a contribution to this project, I certify that:
165 |
166 | * (a) The contribution was created in whole or in part by me and I
167 | have the right to submit it under the open source license
168 | indicated in the file; or
169 |
170 | * (b) The contribution is based upon previous work that, to the best
171 | of my knowledge, is covered under an appropriate open source
172 | license and I have the right under that license to submit that
173 | work with modifications, whether created in whole or in part
174 | by me, under the same open source license (unless I am
175 | permitted to submit under a different license), as indicated
176 | in the file; or
177 |
178 | * (c) The contribution was provided directly to me by some other
179 | person who certified (a), (b) or (c) and I have not modified
180 | it.
181 |
182 | * (d) I understand and agree that this project and the contribution
183 | are public and that a record of the contribution (including all
184 | personal information I submit with it, including my sign-off) is
185 | maintained indefinitely and may be redistributed consistent with
186 | this project or the open source license(s) involved.
187 |
188 | ## Moderation Policy
189 |
190 | The [Node.js Moderation Policy][] applies to this team.
191 |
192 | ## Code of Conduct
193 |
194 | The [Node.js Code of Conduct][] applies to this team.
195 |
196 | [Node.js Code of Conduct]: https://github.com/nodejs/TSC/blob/master/CODE_OF_CONDUCT.md
197 | [Node.js Moderation Policy]: https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md
198 | [Consensus Seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making
199 |
--------------------------------------------------------------------------------
/benchmarks/community-benchmark/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | function assertShaLike() {
3 | local shaVarName="${1}"
4 | local sha="${!1}"
5 | if [ -z "${sha}" ] || ! echo "${sha}" | grep -qE '^[0-9a-fA-F]+$'; then
6 | echo "${shaVarName} (${sha}) does not look like a commit SHA"
7 | exit
8 | fi
9 | }
10 |
11 | function assertMatchesPullRequest() {
12 | local shaVarName="${1}"
13 | local sha="${!1}"
14 | local pr_id="${!2}"
15 | if [[ ! "$(git ls-remote origin refs/pull/${pr_id}/head)" =~ ^${sha}.*refs/pull/${pr_id}/head$ ]]; then
16 | echo "${shaVarName} (${sha}) does not match HEAD for pull request ${pr_id}"
17 | exit
18 | fi
19 | }
20 |
21 | function mandatory() {
22 | if [ -z "${!1}" ]; then
23 | echo "${1} not set"
24 | usage
25 | exit
26 | fi
27 | }
28 |
29 | function optional() {
30 | if [ -z "${!1}" ]; then
31 | echo -n "${1} not set (ok)"
32 | if [ -n "${2}" ]; then
33 | echo -n ", default is: ${2}"
34 | export ${1}="${2}"
35 | fi
36 | echo ""
37 | fi
38 | }
39 | function usage(){
40 | echo "Usage:"
41 |
42 | echo "This script has two use cases:"
43 | echo "Use case 1: We want to test the impact of a PR on a branch."
44 | echo "To run this, declare:"
45 | echo "The script expects the following variables to be set:"
46 | echo "CATEGORY = a category of tests to run - folders in benchmark/"
47 | echo "BASE = the branch the test should be based off. e.g. master"
48 | echo "PULL_ID = the pull request that contains changes to test"
49 | echo "TARGET = the SHA of the commit HEAD that contains changes to test"
50 | echo "-------------------------------------------------------------"
51 | echo "Use case 2: We want to compare two branches, tags or commits."
52 | echo "To run this, declare:"
53 | echo "CATEGORY = a category of tests to run - folders in benchmark/"
54 | echo "BASE = the branch/tag/commit the test should be based off. e.g. master"
55 | echo "TARGET = the branch/tag/commit to compare against base"
56 | echo "-------------------------------------------------------------"
57 | echo "The following are optional across both use cases"
58 | echo "RUNS = defaults to empty"
59 | echo "FILTER = defaults to empty"
60 | echo "MACHINE_THREADS - used for building node. Defaults to all threads on machine"
61 | echo "CPUSET - used for pinning to specific CPU cores. Default to 0-11 (performance cores)"
62 | }
63 |
64 | if [ -z $PULL_ID ]; then
65 | #PULL_ID isn't declared. Therefore we are probably in use case #2
66 | export USE_CASE=2
67 | mandatory BASE
68 | mandatory TARGET
69 | else
70 | export USE_CASE=1
71 | mandatory BASE
72 | mandatory PULL_ID
73 | mandatory TARGET
74 | assertShaLike TARGET
75 | fi
76 | mandatory CATEGORY
77 | optional RUNS
78 | optional FILTER
79 | optional CPUSET "0-11"
80 | getMACHINE_THREADS=`cat /proc/cpuinfo |grep processor|tail -n1|awk {'print $3'}`
81 | let getMACHINE_THREADS=getMACHINE_THREADS+1 #getting threads this way is 0 based. Add one
82 | optional MACHINE_THREADS $getMACHINE_THREADS
83 | rm -rf node
84 | git clone --depth=1 https://github.com/nodejs/node.git
85 | cd node
86 | case $USE_CASE in
87 | 1)
88 | # Validate TARGET and pull request HEAD are consistent
89 | assertMatchesPullRequest TARGET PULL_ID
90 | git checkout $BASE
91 | ;;
92 | 2)
93 | git checkout $BASE
94 | ;;
95 | esac
96 |
97 | # build master
98 | # select the appropriate compiler
99 | curl -sLO https://raw.githubusercontent.com/nodejs/build/master/jenkins/scripts/select-compiler.sh
100 | . ./select-compiler.sh
101 | ./configure > ../node-master-build.log
102 | make -j${MACHINE_THREADS} >> ../node-master-build.log
103 | mv out/Release/node ./node-master
104 |
105 | # build pr
106 | case $USE_CASE in
107 | 1)
108 | curl -L "https://github.com/nodejs/node/compare/$(git rev-parse HEAD)...${TARGET}.patch"|git apply -3
109 | ;;
110 | 2)
111 | git checkout $TARGET
112 | ;;
113 | esac
114 | # select the appropriate compiler
115 | . ./select-compiler.sh
116 | ./configure > ../node-pr-build.log
117 | make -j${MACHINE_THREADS} >> ../node-pr-build.log
118 | mv out/Release/node ./node-pr
119 | if [ -n "$FILTER" ]; then
120 | FILTER="--filter ${FILTER}"
121 | fi
122 | if [ -n "$RUNS" ]; then
123 | RUNS="--runs ${RUNS}"
124 | fi
125 | if [ -n "$CPUSET" ]; then
126 | CPUSET="--set CPUSET=${CPUSET}"
127 | fi
128 | # run benchmark
129 | fileName=output`date +%d%m%y-%H%M%S`.csv
130 | echo "Output will be saved to $fileName"
131 | pwd
132 |
133 | # Run on performance cores
134 | ./node-master benchmark/compare.js $CPUSET --old ./node-master --new ./node-pr $FILTER $RUNS -- $CATEGORY | tee $fileName
135 |
136 | cat $fileName | Rscript benchmark/compare.R
137 | mv $fileName $startDir
138 |
--------------------------------------------------------------------------------
/meetings/2022-11-14.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Meeting 2022-11-14
2 |
3 | ## Links
4 |
5 | * **Recording**: https://youtu.be/syQw6KFheDM
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/7
7 | * **Minutes Google Doc**: https://docs.google.com/document/d/1SOth1yjmhOUN6zSWT7b613c4o3ajcnLhxQWloO9Kuf0/edit
8 |
9 | ## Present
10 |
11 | * Performance team: @nodejs/performance
12 | * Yagiz Nizipli (@anonrig)
13 | * Jean Burellier (@sheplu)
14 | * Ulises Gascon (@ulisesGascon)
15 | * Tony Gorez (@tony-go)
16 | * Rafael Gonzaga (@rafaelgss)
17 | * Juan Arboleda (@juanarbol)
18 | * Ethan Arrowood (@Ethan-Arrowood)
19 | * Santiago Gimeno (@santigimeno)
20 |
21 | ## Announcements
22 |
23 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
24 |
25 | ### nodejs/performance
26 |
27 | * Governance & Meeting Schedule [#8](https://github.com/nodejs/performance/issues/8)
28 | * Let’s keep this basic schedule of meeting every two weeks on Monday 6pm UTC time.
29 |
30 | * Confusing LICENSE.md [#6](https://github.com/nodejs/performance/issues/6 )
31 | * License is currently not valid. Depending on what the group will be producing, the license can change
32 | * Ethan: MIT seems good as this is the license used by Node.js.
33 | * Made the decision to remove existing license file and reference Node.js license.
34 |
35 | * Buffer.writeXIntYYZZ [#2](https://github.com/nodejs/performance/issues/2 )
36 | * Had a recommendation of triggering benchmarks with commit changes in releases.
37 | * Issue with time needed to run every benchmarks in the CI. Easily can take 24h to run all.
38 | * How can we be sure to run all the benchmarks needed when we commit or release ?
39 | * How can we be sure to not miss some code changes impacting the performances
40 |
41 | * Buffer.indexOf [#4](https://github.com/nodejs/performance/issues/4)
42 | * Tony: will be leading that
43 |
44 | * Atomic condition variable is very slow in v8: https://github.com/nodejs/performance/issues/5
45 | * Should we create a low / high impact label ?
46 |
47 | * Proposal: Replacing ICU: https://github.com/nodejs/node/issues/45389
48 | * Moved it to next agenda.
49 |
50 | * Undici Improvements: https://github.com/nodejs/performance/issues/11
51 | * Ethan and Robert mentioned Streams (WebStreams), Buffers
52 | * Rafael shared https://github.com/nodejs/undici/issues/1203#issuecomment-1100969210
53 |
54 | ## Q&A, Other
55 |
56 | ## Upcoming Meetings
57 |
58 | * **Node.js Project Calendar**:
59 |
60 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
61 |
--------------------------------------------------------------------------------
/meetings/2022-11-28.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2022-11-28
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=f0yEem50VOI
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/28
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Yagiz Nizipli (@anonrig)
12 | * Ulises Gascon (@ulisesgascon)
13 | * Jean Burellier (@sheplu)
14 | * Ethan Arrowood (@Ethan-Arrowood)
15 | * Stephen Belanger (@qard)
16 | * Juan Arboleda (@juanarbol)
17 | * Marco Ippolito (@marco-ippolito)
18 |
19 | ## Agenda
20 |
21 | ## Announcements
22 |
23 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
24 |
25 | ### nodejs/performance
26 |
27 | * Add support for V8 fast call [#23](https://github.com/nodejs/performance/issues/23)
28 | * Multiple people are keen to help (Matteo, James, …)
29 | * stephen: V8 fast call API can be (very) limited but we need to investigated the gain / impact
30 | * Juan & Yagiz: find more information and come up with a PR
31 | * Merging Github team with README [#19](https://github.com/nodejs/performance/issues/19)
32 | * Yagiz & Jean: discussion around GitHub team VS people listed in the README.md
33 | * Buffer.toString vs TextDecoder [#18](https://github.com/nodejs/performance/issues/18)
34 | * Yagiz: still some issue for small string and we should investigate that
35 | * Jean: will try to keep a look at it
36 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
37 | * Ethan: streams are slow by default. Need to find a way to have faster stream (for Fetch but also a lot of other parts of node). Micro optimization is maybe not the best use case here (based on how it is used) and would be better to have one good optimization (based on time passed)
38 | * spec => https://fetch.spec.whatwg.org/
39 | * Yagiz : Check turbofan for optimization
40 | * 64 bit integers [#10](https://github.com/nodejs/performance/issues/10)
41 | * nothing new
42 | * WHATWG Streams [#9](https://github.com/nodejs/performance/issues/9)
43 | * We will have a special discussion with multiple people around this topic. If you are interested you can add yourself on the issue
44 | * Atomic condition variable [#5](https://github.com/nodejs/performance/issues/5)
45 | * removing agenda label due to missing benchmarks
46 | * Buffer.indexOf [#4](https://github.com/nodejs/performance/issues/4)
47 | * Tony did a fantastic job, but unfortunately there isn't any room for improvement at the moment.
48 | * Buffer.(read|write)(U)Int(LE|BE)(8|16|32) [#2](https://github.com/nodejs/performance/issues/2)
49 | * nothing new, moving to the next meetings agenda
50 |
51 |
52 | ## Q&A, Other
53 | * Yagiz: Open sourced @BridgeAR's faster version of array-join - could be nice to check https://github.com/anonrig/fast-array-join
54 | * Ethan: Startup time Node 16 vs Node 18 https://github.com/nodejs/node/issues/45662
55 |
56 |
57 | ## Upcoming Meetings
58 |
59 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
60 |
61 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
62 |
63 |
--------------------------------------------------------------------------------
/meetings/2023-01-09.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-01-09
2 |
3 | ## Links
4 |
5 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/35
6 |
7 | ## Present
8 |
9 | * Performance team: @nodejs/performance
10 | * Yagiz Nizipli (@anonrig)
11 | * Rafael Gonzaga (@RafaelGSS)
12 | * Robert Nagy (@ronag)
13 | * Stephen Belanger (@qard)
14 | * Ulises Gascon (@UlisesGascon)
15 | * Marco Ippolito (@marco-ippolito)
16 | * Mike Roth (@roth-mike)
17 | * Juan Arboleda (@juanarbol)
18 | * Miguel Teixeira (@miguelteixeiraa)
19 | * Jean Burellier (@sheplu)
20 |
21 | ## Agenda
22 |
23 | ## Announcements
24 |
25 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
26 |
27 | Anonrig: Proposal to create a C++ URL parser and embed it directly on Node.js
28 |
29 | ### nodejs/node
30 |
31 | * Start time performance regression when upgrading from 16.x to 18.x [#45662](https://github.com/nodejs/node/issues/45662)
32 | * It seems fixed. Waiting for release on v19.x and active release lines backport.
33 | * The backport needs a rewrite of the feature
34 |
35 | ### nodejs/performance
36 |
37 | * Add support for V8 fast call [#23](https://github.com/nodejs/performance/issues/23)
38 | * We need a volunteer to write a doc for this
39 |
40 | * Buffer.toString vs TextDecoder [#18](https://github.com/nodejs/performance/issues/18)
41 | * For small strings it’s still slow due to JS -> C++ bridge costs.
42 | * ronagy: Would be good to include V8 Fast call to Buffer.toString too
43 |
44 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
45 | * WHATWG Streams [#9](https://github.com/nodejs/performance/issues/9)
46 | * Rafael did an investigation and opened a PR that improves the undici.fetch benchmark by ~30% by reusing Errors
47 | * `makeTransferable` is slow due to some prototype manipulations. We can achieve approximately 30% of improvement on that path.
48 | * Another possible choice it to optimize Error.captureStackTrace which is quite expensive
49 | * We might consider implementing the Webstreams on the C++ side. We’re not sure how feasible this is considering the main usage of webstreams is over fetch, and fetch is for compatibility not for performance.
50 |
51 | * Buffer.(read|write)(U)Int(LE|BE)(8|16|32) [#2](https://github.com/nodejs/performance/issues/2)
52 | * ronagy: Happy to provide a PoC.
53 |
54 | * Do not parse numbers on url parsers - ipv4[#36](https://github.com/nodejs/performance/issues/36)
55 | * Current EndsInNumber implementation parses every number, but it is unnecessary for validation only purposes.
56 | There is a potential 25-30% room for improvement, and Yagiz is happy to guide any volunteer.
57 |
58 | ## Q&A, Other
59 |
60 | ## Upcoming Meetings
61 |
62 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
63 |
64 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
65 |
66 |
--------------------------------------------------------------------------------
/meetings/2023-01-23.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-01-23
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=334glI1nluU
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/43
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Ulises Gascon: @ulisesGascon
12 | * Marvin Hagemeister @marvinhagemeister
13 | * Yagiz Nizipli: @anonrig
14 | * Stephen Belanger: @qard
15 | * Kerem Kat: @krk
16 | * Joyee Cheung: @joyeecheung
17 | * Juan Arboleda: @juanarbol
18 | * Robert Nagy: @ronag
19 |
20 | ## Agenda
21 |
22 | ## Announcements
23 |
24 | * Node URL got ~30% faster thanks to Miguel (referencing https://github.com/nodejs/node/pull/46227)
25 |
26 | ### nodejs/node
27 |
28 | * Start time performance regression when upgrading from 16.x to 18.x [#45662](https://github.com/nodejs/node/issues/45662)
29 | * The issue is fixed on the main branch and Node 19.
30 | * Working on a backport to Node 18.
31 |
32 | ### nodejs/performance
33 |
34 | * Node errors are very slow to create [#40](https://github.com/nodejs/performance/issues/40)
35 | * A lot of dependencies are starting to *not* use cancellable apis because of the performance issues.
36 | * Custom optimization for abort signal/abort event can be done (@ronag)
37 | * Adding and removing the event handler might be the issue.
38 | * If someone is interested in this, Robert is happy to guide them.
39 |
40 | * Module resolution [#39](https://github.com/nodejs/performance/issues/39)
41 | * Marvin diagnosed an issue with file system operations and the impact.
42 | * **Very** big part of module resolution is lost on creating errors.
43 | * Async methods might be improved.
44 | * Yagiz is happy to add `fs.isFile` kind of API if needed.
45 | * Joyee has some insights/recommendations for the fs.statSync improvement.
46 | * The “throw and catch an error even when it’s useless” behavior has an old deprecation TODO. If we remove it then the performance issue would also go away.
47 | * It’s possible to add options parameter to `fs.existsSync` for checking if it’s a file/directory.
48 |
49 | * Add support for V8 fast call [#23](https://github.com/nodejs/performance/issues/23)
50 | * Can we add v8 support to Node-API?
51 |
52 | * Buffer.toString vs TextDecoder [#18](https://github.com/nodejs/performance/issues/18)
53 | * Let’s improve the docs to use TextDecoder for certain cases of Buffer.toString
54 |
55 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
56 | * Rafael has invested some time on this, and improved it.
57 |
58 | * WHATWG Streams [#9](https://github.com/nodejs/performance/issues/9)
59 | * Skipping because Rafael is not at the meeting.
60 |
61 | * Buffer.(read|write)(U)Int(LE|BE)(8|16|32) [#2](https://github.com/nodejs/performance/issues/2)
62 | * Robert invested some time on this, and theoretically it is possible to use DataView to improve writeInt32LE and readInt32LE implementations.
63 | * James (@jasnell) might help with this.
64 |
65 |
66 | ## Q&A, Other
67 |
68 |
69 | ## Upcoming Meetings
70 |
71 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
72 |
73 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
74 |
75 |
--------------------------------------------------------------------------------
/meetings/2023-02-06.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-02-06
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=l8-DCAMGobE
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/48
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Yagiz Nizipli: @anonrig
12 | * Marvin Hagemeister @marvinhagemeister
13 | * Ulises Gascon: @ulisesGascon
14 | * Stephen Belanger: @qard
15 | * Santiago Gimeno: @santigimeno
16 | * Tony Gorez: @tony-go
17 | * Rafael Gonzaga: @RafaelGSS
18 | * Robert Nagy: @ronag
19 |
20 |
21 | ## Agenda
22 |
23 | ## Announcements
24 |
25 | [Ada](https://github.com/ada-url/ada), the new URL parse will be added to Node.js as dependency in order to increase speed by 78 %, fetch will become faster too 🎉
26 |
27 | Marvin released a really good blog post on https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-3/.
28 |
29 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
30 |
31 | ### nodejs/node
32 |
33 | * Start time performance regression when upgrading from 16.x to 18.x [#45662](https://github.com/nodejs/node/issues/45662)
34 | 19.x changes are already merged
35 | There is an ongoing work to port the changes to 16.x and 18.x (lead by @joyeecheung)
36 | This item will be removed from the agenda
37 | ### nodejs/performance
38 |
39 | * AbortSignal is slow [#44](https://github.com/nodejs/performance/issues/44)
40 | Reached out to RxJS folks. There are some discussions and agreements ongoing, but after checking the performance improvements there were no major upgrades
41 | PR from Santigo (@santigimeno) improves the performance by 20% - https://github.com/nodejs/node/pull/46527
42 | Ongoing discussion about further changes that could improve the performance even more include moving `Event.isTrusted` to the prototype and not setting `__proto__: null`. The former might break the spec.
43 | Recommendation escalate to WinterCG group
44 | * Node errors are very slow to create [#40](https://github.com/nodejs/performance/issues/40)
45 | This item will be removed from the agenda
46 | * Module resolution [#39](https://github.com/nodejs/performance/issues/39)
47 | There is an open PR relevant (pending from benchmark)
48 | Suggestion: Implement it fully in C++. Input value is a string, return value is a boolean, so this would lend itself to use v8 fast paths
49 | @tony-go will take a look at it
50 | We could expose it to user land later if we found a use case for it
51 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
52 | We move from very slow to just slow in terms of performance
53 | There are more open opportunities, but let’s see how Ada will impact on the performance and then we can reevaluate the situation.
54 | This item will be removed from the agenda, and the issue will be closed. We can reopen the issue if needed.
55 | * WHATWG Streams [#9](https://github.com/nodejs/performance/issues/9)
56 | [Last update from Rafael](https://github.com/nodejs/performance/issues/9#issuecomment-1370136019)
57 | We will discuss it again in the next meeting
58 | * Buffer.(read|write)(U)Int(LE|BE)(8|16|32) [#2](https://github.com/nodejs/performance/issues/2)
59 | This item will be removed from the agenda
60 |
61 | * Reference to https://github.com/nodejs/performance/issues/51
62 |
63 | ## Q&A, Other
64 |
65 | ## Upcoming Meetings
66 |
67 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
68 |
69 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
70 |
71 |
--------------------------------------------------------------------------------
/meetings/2023-02-20.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-02-20
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=KLsxXja1fYs
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/58
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Yagiz Nizipli: @anonrig
12 | * Ulises Gascon: @ulisesGascon
13 | * Santiago Gimeno: @santigimeno
14 | * Juan Arboleda: @soyjuanarbol
15 | * Robert Nagy: @ronag
16 | * Ruben Bridgewater: @BridgeAR
17 |
18 | ## Agenda
19 |
20 | ## Announcements
21 |
22 | - The new URL parser will be released this week!
23 | - It was a productive week for all of us! Other improvements had been made by the group members (Ruben, Joyee and multiple other collaborators) based on separated issues
24 | - Santiago is planning to do a new PR for event creation this week
25 |
26 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
27 |
28 | ### nodejs/performance
29 |
30 | * getLibuvNow is slow [#49](https://github.com/nodejs/performance/issues/49)
31 | - Seems that there is a fix for it, related to timers (https://github.com/nodejs/node/pull/46579) with v8 fastApi. (Thanks to joyee!)
32 | It will be removed from the agenda
33 | * AbortSignal pattern is slow [#44](https://github.com/nodejs/performance/issues/44)
34 | - Ruben created a PR to reduce error creation duration by 86-166% (Amazing work!)
35 | - There are several issues with AbortSignal Pattern
36 | - Emitting events is slow (Santiago will open a PR to improve this)
37 | - Adding and removing event listeners in event Targets. This is actually the main issue. New issue: https://github.com/nodejs/performance/issues/60
38 | - We have specific perf benchmarks for events (adding and removing) in https://github.com/nodejs/node/blob/main/benchmark/events/eventtarget.js, seems like we should potentially update them for EventTarget addition/removal.
39 | * Module resolution [#39](https://github.com/nodejs/performance/issues/39)
40 | - Yagiz did some research and a PR related to it (https://github.com/nodejs/node/pull/46652) - Not yet merged. We should add a caching layer once is merged
41 | - There is a pending PR for changing off threading loaders. Until it gets merged, Yagiz’s pull request will be on hold to avoid git conflicts.
42 | * WHATWG Streams [#9](https://github.com/nodejs/performance/issues/9)
43 | - There is an option to improve this by moving the core logic to C++, similar to the work done by Deno and Bun, but requires extensive work. For the time being, we can close this issue.
44 | - This item will be removed from the agenda
45 |
46 | ## Q&A, Other
47 | - Yagiz opened several PRs related to URL parsing and he discovered a happy path that has a more performing approach. There was a discussion around it with Daniel as this implementation may have a more complex implementation as hidden cost. It is an early stage yet to build a consensus.
48 |
49 | ## Upcoming Meetings
50 |
51 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
52 |
53 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
54 |
55 |
--------------------------------------------------------------------------------
/meetings/2023-04-03.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-04-03
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=MVqHVCv-rnQ
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/68
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Yagiz Nizipli: @anonrig
12 | * Stephen Belanger: @qard
13 | * Robert Nagy: @ronag
14 | * Debadree Chatterjee @debadree25
15 |
16 |
17 | ## Agenda
18 |
19 | ## Announcements
20 |
21 | * Ada v2 is released. Announcement post is available at http://yagiz.co/announcing-ada-url-parser-v2-0/
22 | * V8 11.3 brings `String.prototype.toWellFormed()` support with 70-80% faster `toUSVString`
23 | * Increasing the default watermark size for version 20. It provides a performance boost!
24 |
25 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
26 |
27 | ### nodejs/performance
28 |
29 | * add/remove handlers are slow on EventTarget [#60](https://github.com/nodejs/performance/issues/60)
30 | * It would be great to add a fast path for AbortSignal to have only one `abort` listener.
31 | * There is no one working on it right now.
32 | * Debadree attempted on adding a hashmap based approach but did not help with any performance impacts.
33 | * It would be great to have a benchmark for adding and removing a single event listener (the current benchmarks adds multiple listeners and then dispatches), because the proposed benchmark would never traverse the linkedlist.
34 | * Session proposals for the next Collaborator Summit - what should we submit [#64](https://github.com/nodejs/performance/issues/64)
35 | * Bun & Deno Comparison [#55](https://github.com/nodejs/performance/issues/55)
36 | * Yagiz proposed adding his own performance benchmarks to the performance repository. Will keep this for visibility.
37 | * AbortSignal pattern is slow [#44](https://github.com/nodejs/performance/issues/44)
38 | * Closing it since it is a duplicate of add/remove handlers for EventTarget
39 | * Module resolution [#39](https://github.com/nodejs/performance/issues/39)
40 | * Put this on hold until off-thread loader pull request is landed.
41 | * EventTarget [#32](https://github.com/nodejs/performance/issues/32)
42 | * Closing it due to Santiago’s amazing contributions.
43 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
44 | * Robert: I don’t know where to start optimizing. There’s more work to be done. Maybe we can ask Rafael on making a new analysis on undici fetch?
45 |
46 |
47 | ## Q&A, Other
48 |
49 | ## Upcoming Meetings
50 |
51 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
52 |
53 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
54 |
55 |
--------------------------------------------------------------------------------
/meetings/2023-04-17.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-04-17
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=yRj7BT8xeEI
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/71
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Ulises Gascon: @ulisesGascon
12 | * Yagiz Nizipli: @anonrig
13 | * Robert Nagy: @ronag
14 | * Miguel Teixeira: @miguelteixeiraa
15 |
16 | ## Agenda
17 |
18 | ## Announcements
19 |
20 | - Ada is backported to Node 18!
21 | - Node 20 will include off-thread loading of modules pull request, and Ada v2.0 which will improve the URL parsing performance
22 | - @khafradev added V8 Fast API to URL.canParse which improves the performance up to 60-70%.
23 | - Performance became a strategic initiative of Node.js with @anonrig as the champion
24 |
25 | *Extracted from **performance-agenda** labeled issues and pull requests from the **nodejs org** prior to the meeting.
26 |
27 | ### nodejs/performance
28 |
29 | * Session proposals for the next Collaborator Summit - what should we submit [#64](https://github.com/nodejs/performance/issues/64)
30 | * Three main topics suggested: web streams, benchmark CI/CD and HTTP (parser, Ada)
31 | * @anonrig can prepare a session about Ada
32 | * Benchmark main topic can be focused around the ownership/responsibilities (Build team or performance team) for the node-benchmark repository. @Ulises will try to help on this
33 | * Additional ideas: Introducing v8 fast API to collaborators will help to make adoption easier
34 | * The issue will be open, so other members can add more ideas in the following days
35 | * The discussion will continue offline as well
36 | * add/remove handlers are slow on EventTarget [#60](https://github.com/nodejs/performance/issues/60)
37 | * No big changes since the last meeting.
38 | * Removing it from the agenda until someone grabs it.
39 | * Bun & Deno Comparison [#55](https://github.com/nodejs/performance/issues/55)
40 | * @anonrig will open a pull request to move anonrig/node-benchmarks to nodejs/performance repository.
41 | * It will help us to understand where we can improve
42 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
43 | * @anonrig: Benchmarks on Undici are quite flaky. It’s quite hard to understand any performance improvement, and I propose we improve the benchmarks.
44 |
45 |
46 | ## Q&A, Other
47 |
48 | * Path modules can leverage a performance boost. @anonrig will open an issue in the next couple of days of what we can do.
49 | * @anonrig asked @ronag if he could automatically add Yagiz’s username to TSC notes to get notified by the meetings to share the strategic initiative news.
50 | * Legacy CJS performance issue is open at the repository. If anybody wants to work on it, @anonrig is happy to share his knowledge on this.
51 |
52 | ## Upcoming Meetings
53 |
54 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
55 |
56 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
57 |
--------------------------------------------------------------------------------
/meetings/2023-05-01.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-05-01
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=dY2q_MR_itA
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/75
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Ulises Gascon: @ulisesGascon
12 | * Yagiz Nizipli: @anonrig
13 | * Debadree Chatterjee: @debadree25
14 |
15 | ## Agenda
16 |
17 | ## Announcements
18 |
19 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
20 |
21 | ### nodejs/performance
22 |
23 | * Session proposals for the next Collaborator Summit - what should we submit [#64](https://github.com/nodejs/performance/issues/64)
24 | * Ref: https://github.com/openjs-foundation/summit/issues/355#issuecomment-1529309477
25 | * Closing the issue due to EOL.
26 | * Bun & Deno Comparision [#55](https://github.com/nodejs/performance/issues/55)
27 | * Removed from the agenda until the repo migration is completed
28 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
29 | * Ongoing process
30 |
31 |
32 | ## Q&A, Other
33 |
34 | ## Upcoming Meetings
35 |
36 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
37 |
38 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
39 |
40 |
--------------------------------------------------------------------------------
/meetings/2023-05-15.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-05-15
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=wTQYyxSViVg
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/78
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Yagiz Nizipli: @anonrig
12 | * Ulises Gascon: @ulisesGascon
13 | * Robert Nagy: @ronag
14 | * Debadree Chatterjee: @debadree25
15 | * Vinicius Lourenço: @H4ad
16 |
17 | ## Agenda
18 |
19 | ## Announcements
20 |
21 |
22 |
23 |
24 |
25 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
26 |
27 | ### nodejs/performance
28 |
29 | * Improve legacy CJS resolve [#73](https://github.com/nodejs/performance/issues/73)
30 | * Nodejs is performing several c++ calls to `new URL` when running `fileExists` that can be simplified into a single C++ call.
31 | * This issue is open to contribution from the community.
32 |
33 | * MakeCallback is very slow [#24](https://github.com/nodejs/performance/issues/24)
34 | * C++ is calling JS, this is very slow due Async hooks.
35 | * This scenario happened in the past in other parts of Node.js
36 | * There is a path to explore: flag to control async hooks. That way we can avoid async hook when they are not needed.
37 | * We want to involve more relevant contributors in this issue. We will ping them in the issue
38 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
39 | * There are no news
40 | * Readable streams should be the focus from now on: https://github.com/nodejs/performance/issues/82
41 | * PR from Debadree related to this: https://github.com/anonrig/node-benchmarks/pull/3
42 |
43 |
44 | ## Q&A, Other
45 |
46 | * Expensive `isTraceHTTPEnable` [#81](https://github.com/nodejs/performance/issues/81)
47 | * Vinicius will lead the implementation with the support from Yagiz
48 |
49 |
50 | ## Upcoming Meetings
51 |
52 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
53 |
54 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
55 |
56 |
--------------------------------------------------------------------------------
/meetings/2023-05-29.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-05-29
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=bqjXEyPQSfs
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/85
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Ulises Gascon: @ulisesgascon
12 | * Robert Nagy: @ronag
13 | * Vinícius Lourenço: @H4ad
14 | * Yagiz Nizipli: @anonrig
15 |
16 | ## Agenda
17 |
18 | ## Announcements
19 |
20 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
21 |
22 |
23 | * Libuv 1.45.0: https://github.com/nodejs/node/pull/48078
24 | * Thanks to @bnoordhuis and https://github.com/isc-projects which iiuc sponsored some of his work.
25 | * It is providing a performance boost due the new Linux architecture
26 |
27 | * https://github.com/nodejs/performance/issues/85#issuecomment-1563757752
28 | * Thanks to @kvakil: 30% boost at startup (v20.1.0 -> v20.2.0)
29 |
30 | * Yagiz is leaving for paternity leave. Ulises will help to host the next two meetings.
31 |
32 | ### nodejs/performance
33 |
34 | * Performance of WHATWG ReadableStream.read() [#82](https://github.com/nodejs/performance/issues/82)
35 | * We are a little bit slower in comparison with Bun and Deno
36 | * It will be nice to see if Deno/Bun is using native implementation or JS.
37 | * Improve legacy CJS resolve #73
38 | * The current approach is to use `simdjson` to perform the JSON parsing and increase the performance. See: https://github.com/nodejs/node/pull/47991
39 | * @H4ad is working on this issue from now on
40 | * MakeCallback is very slow [#24](https://github.com/nodejs/performance/issues/24)
41 | * We reached out to more people about it, including the TSC meeting.
42 | * We need to do a deeper investigation
43 | * This approach made by the `uWebSockets.js` is interesting. See: https://github.com/nodejs/performance/issues/24#issuecomment-1559993286
44 | * Daniel(@lemire) & Yagiz will work soon in a new library to resolve the Websockets layer (compatible with Node.js)
45 |
46 | * fetch [#11](https://github.com/nodejs/performance/issues/11)
47 | * No news, we will remove it from the agenda
48 | * Benchmarks and more info is needed before we can make any progress.
49 | * Contributions from the community are more than welcome here.
50 |
51 | ## Q&A, Other
52 |
53 | * Expensive `isTraceHTTPEnable` (https://github.com/nodejs/performance/issues/81) is worth mentioning. @H4ad is working on it.
54 | * Vinícius is nominated/invited to the Performance Team. Reference: https://github.com/nodejs/performance/issues/86
55 |
56 | ## Upcoming Meetings
57 |
58 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
59 |
60 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
61 |
62 |
--------------------------------------------------------------------------------
/meetings/2023-06-12.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-06-12
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=LXvSMjyiLhM
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/94
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Ulises Gascon: @ulisesgascon
12 | * Vinícius Lourenço: @H4ad
13 |
14 |
15 |
16 | ## Agenda
17 |
18 | ## Announcements
19 |
20 | * No announcements
21 |
22 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
23 |
24 | ### nodejs/performance
25 |
26 | * Performance of WHATWG ReadableStream.read() [#82](https://github.com/nodejs/performance/issues/82)
27 | * No news
28 | * Expensive `isTraceHTTPEnable` [#81](https://github.com/nodejs/performance/issues/81)
29 | * Vinícius has created a PR https://github.com/nodejs/node/pull/48142, there are some issues with the compilation but the solution is working fine
30 | * It will be great to get additional help with the compilation issues
31 | * Improve legacy CJS resolve [#73](https://github.com/nodejs/performance/issues/73)
32 | * Vinícius has created a PR https://github.com/nodejs/node/pull/48325
33 | * This brings the possibility to improve other parts of the system like `fileURLToPath`, but it will need some ESM resolver code refactoring first as described in https://github.com/nodejs/node/pull/48325#issuecomment-1575799579
34 | * MakeCallback is very slow [#24](https://github.com/nodejs/performance/issues/24)
35 | * No news
36 | * Added “help wanted” label to the issue
37 |
38 |
39 |
40 | ## Q&A, Other
41 |
42 | ## Upcoming Meetings
43 |
44 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
45 |
46 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
47 |
--------------------------------------------------------------------------------
/meetings/2023-06-26.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-06-26
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=UQzj2Ezu1jU
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/97
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Ulises Gascon: @ulisesGascon
12 | * Vinícius Lourenço: @H4ad
13 | * Carlos Espa: @Ceres6
14 |
15 |
16 | ## Agenda
17 |
18 | ## Announcements
19 |
20 | No announcements
21 |
22 | ### nodejs/performance
23 |
24 | * Performance of WHATWG ReadableStream.read() [#82](https://github.com/nodejs/performance/issues/82)
25 | * No news
26 | * Expensive `isTraceHTTPEnable` [#81](https://github.com/nodejs/performance/issues/81)
27 | * Vinícius made a good progress (compilation issue solved)
28 | * Waiting for review. See: https://github.com/nodejs/node/pull/48142
29 | * @anonrig can help us to speed up the review
30 | * Improve legacy CJS resolve [#73](https://github.com/nodejs/performance/issues/73)
31 | * Vinícius added new tests
32 | * Vinícius detected a bug on his own code but he is in the way to fix it, which was related with the resolution on windows.
33 | * MakeCallback is very slow [#24](https://github.com/nodejs/performance/issues/24)
34 | * No news
35 | * Open for help from the community
36 |
37 |
38 | ## Q&A, Other
39 |
40 | * Fast path for --no-deprecation [#90](https://github.com/nodejs/performance/issues/90)
41 | * This is a good first issue for the community
42 | * Carlos will lead it
43 |
44 | ## Upcoming Meetings
45 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
46 |
47 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
48 |
49 |
--------------------------------------------------------------------------------
/meetings/2023-07-10.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-07-10
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=jARbOPW2-I4
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/101
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Yagiz Nizipli: @anonrig
12 | * Ulises Gascon: @ulisesGascon
13 | * Carlos Espa: @Ceres6
14 | * Rafael Gonzaga: @RafaelGSS
15 | * Ruben Bridgewater: @BridgeAR
16 |
17 | ## Agenda
18 |
19 | ## Announcements
20 |
21 | *Extracted from **performance-agenda** labeled issues and pull requests from the **nodejs org** prior to the meeting.
22 |
23 | ### nodejs/node
24 |
25 | * Improve developer experience for v8 performance related flags [#43407](https://github.com/nodejs/node/issues/43407)
26 | * This is an issue that started in 2022 and is related to the flags that we use to build Node.js
27 | * Let’s keep the item in the agenda for now (visibility)
28 | * Currently this topic is open for community contributions
29 |
30 | ### nodejs/performance
31 |
32 | * What's new for the Node.js Performances? - 2023 version [#98](https://github.com/nodejs/performance/issues/98)
33 | * The team can publish news in this issue that are later on collected for a Node.js global activity feed in https://github.com/nodejs/nodejs-news-feeder
34 | * This is a global initiative in the organization
35 | * Removed from the agenda and discussion going offline
36 | * This issue will be pinned in the repository
37 | * Reduce URL initializations in ESM [#92](https://github.com/nodejs/performance/issues/92)
38 | * It was part of a long process from last month (3 PRs to remove unnecessary urls and parsing content)
39 | * Open to contributions to finalize the last part of it
40 | * Improve the performance of package json reader [#91](https://github.com/nodejs/performance/issues/91)
41 | * Node.js is traversing folders (up to two or three levels) looking for package.json, this is slow
42 | * There are two PRs already merged authored by Yagiz related to parsing.
43 | * There is a new benchmark to measure this change (https://github.com/lemire/simdjson_performance_demo) and simdjson library proves that the overhead of reading package json lies in V8 not in Node.js
44 | * There is an independent problem (loading problem) that is related with v8 and not by simdjson
45 | * we can discuss with the v8 team regarding json deserialize/serialize potential improvements. This will require some benchmarking to explain the scenario and the potential improvements
46 | * This is currently open for community contributions
47 | * This improvement is related to startup, require and json manipulation. This will have a great impact in the community
48 | * Fast path for `--no-deprecation` [#90](https://github.com/nodejs/performance/issues/90)
49 | * I think we need a benchmark to show the change of removing deprecations and see the impact of it. The current benchmark shows 1 star confidence, which doesn’t show any improvement.
50 | * Ruben: I don’t think it’s worth the change, because the code is already optimized as well.
51 | * Performance of WHATWG ReadableStream.read() [#82](https://github.com/nodejs/performance/issues/82)
52 | * Expensive `isTraceHTTPEnable` [#81](https://github.com/nodejs/performance/issues/81)
53 | * There was a consensus that the change recommended in this pull request is not worth the performance impact due to adding the extra-overhead and code complexity.
54 | * MakeCallback is very slow [#24](https://github.com/nodejs/performance/issues/24)
55 |
56 |
57 |
58 | ## Q&A, Other
59 |
60 | ## Upcoming Meetings
61 |
62 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
63 |
64 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
65 |
66 |
--------------------------------------------------------------------------------
/meetings/2023-10-16.md:
--------------------------------------------------------------------------------
1 | # Node.js Performance Team Meeting 2023-10-16
2 |
3 | ## Links
4 |
5 | * **Recording**: https://www.youtube.com/watch?v=QRaFTe-CLeU
6 | * **GitHub Issue**: https://github.com/nodejs/performance/issues/124
7 |
8 | ## Present
9 |
10 | * Performance team: @nodejs/performance
11 | * Yagiz Nizipli @anonrig
12 | * Debadree Chatterjee @debadree25
13 | * Aras Abbasi @uzlopak
14 | * Rafael Gonzaga @RafaelGSS
15 | * André Alves @andremralves
16 |
17 | ## Agenda
18 |
19 | ## Announcements
20 |
21 | *Extracted from **performance-agenda** labelled issues and pull requests from the **nodejs org** prior to the meeting.
22 |
23 | ### nodejs/performance
24 |
25 | * Bring back clonefile on Mac OS X [#110](https://github.com/nodejs/performance/issues/110)
26 | * Removed the label and tagged libuv team for a follow-up of the issue.
27 | * Performance of `node:fs` [#106](https://github.com/nodejs/performance/issues/106)
28 | * There are still some sync methods not optimized for error handling. Pull requests are welcome.
29 | * There are a lot of optimization opportunities in fs.promises api that involves reducing the C++ to JS bridge communication.
30 | * Fast path for `--no-deprecation` [#90](https://github.com/nodejs/performance/issues/90)
31 | * @aduh95 said “I’m not sure it’s relevant to spend any time optimizing deprecated features”. Yagiz & Rafael agrees.
32 | * Removing from the agenda and closing upon consensus.
33 | * Performance of WHATWG ReadableStream.read() [#82](https://github.com/nodejs/performance/issues/82)
34 | * Debadree worked on the issue, but couldn’t find an optimization without any breaking changes.
35 | * MakeCallback is very slow [#24](https://github.com/nodejs/performance/issues/24)
36 | * No new updates. Removing it from the agenda.
37 |
38 | ## Q&A, Other
39 |
40 | * @uzlopak mentioned his improving hideStackFrames pull request. Asked for some feedback around the solution and/or document the existing solution. Ref: https://github.com/nodejs/node/pull/49990
41 | * Rafael recommended creating a benchmark using async_hooks since microbenchmarks might not show the real truth about it.
42 | * Yagiz needs some help on Windows in order to unblock a PR opened 3 weeks ago. Ref: https://github.com/nodejs/node/pull/49962
43 | * Rafael mentioned distributed benchmarking CI issue on Build repository https://github.com/nodejs/build/issues/3483
44 | * Yagiz: fs benchmarks take 10+ hours - https://github.com/nodejs/node/issues/49689
45 |
46 | ## Upcoming Meetings
47 |
48 | * **Node.js Foundation Calendar**: https://nodejs.org/calendar
49 |
50 | Click `+GoogleCalendar` at the bottom right to add to your own Google calendar.
51 |
--------------------------------------------------------------------------------